Index: trunk/ippTools/src/staticskytool.c
===================================================================
--- trunk/ippTools/src/staticskytool.c	(revision 31681)
+++ trunk/ippTools/src/staticskytool.c	(revision 31687)
@@ -102,5 +102,5 @@
 
     // optional
-    PXOPT_LOOKUP_STR(label,       config->args, "-set_label", false, false);
+    PXOPT_LOOKUP_STR(label,       config->args, "-set_label", true, false);
     PXOPT_LOOKUP_STR(data_group,  config->args, "-set_data_group", false, false);
     PXOPT_LOOKUP_STR(dist_group,  config->args, "-set_dist_group", false, false);
@@ -125,10 +125,16 @@
     int num_filter = filters->data.list->n;
 
+    PXOPT_LOOKUP_BOOL(group_by_data_group, config->args, "-group_by_data_group", false);
+    PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false);
     PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false);
     PXOPT_LOOKUP_BOOL(check_inputs, config->args, "-check_inputs", false);
-    PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false);
-
-    psString select = pxDataGet("staticskytool_definebyquery_select.sql");
+
+    psString select;
+    if (group_by_data_group) {
+        select = pxDataGet("staticskytool_definebyquery_select_by_dg.sql");
+    } else {
+        select = pxDataGet("staticskytool_definebyquery_select.sql");
+    }
     if (!select) {
         psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
@@ -150,10 +156,12 @@
     psFree(whereMD);
 
+    psString where2 = NULL;
     psString make_unique = NULL;
     if (!rerun) {
+        psStringAppend(&where2, "\n %s\nAND staticskyRun.label = '%s'", where, label);
         psStringAppend(&make_unique, "\nAND sky_id IS NULL");
     }
 
-    if (!p_psDBRunQueryF(config->dbh, select, where, where, num_filter, make_unique ? make_unique : "")) {
+    if (!p_psDBRunQueryF(config->dbh, select, where, where2 ? where2 : where, num_filter, make_unique ? make_unique : "")) {
         psError(PS_ERR_UNKNOWN, false, "database error");
         psFree(select);
@@ -161,4 +169,5 @@
     }
     psFree(select);
+    psFree(where2);
     psFree(make_unique);
 
