Index: trunk/ippTools/src/disttool.c
===================================================================
--- trunk/ippTools/src/disttool.c	(revision 32695)
+++ trunk/ippTools/src/disttool.c	(revision 32696)
@@ -164,4 +164,6 @@
     PXOPT_LOOKUP_STR(dist_group, config->args, "-dist_group", false, false);
 
+    PXOPT_LOOKUP_BOOL(single, config->args, "-singlefilter", false);
+
     if (use_alternate) {
         if (strcmp(stage, "raw")) {
@@ -354,5 +356,9 @@
     } else if (!strcmp(stage, "sky")) {
         magicRunType = "staticskyRun";
-        query = pxDataGet("disttool_definebyquery_sky.sql");
+        if (single) {
+            query = pxDataGet("disttool_definebyquery_sky_singlefilter.sql");
+        } else {
+            query = pxDataGet("disttool_definebyquery_sky.sql");
+        }
         if (!query) {
             psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
@@ -411,4 +417,8 @@
     if (!no_magic) {
         psStringAppend(&query, " AND (%s.magicked > 0)", magicRunType);
+    }
+
+    if (!strcmp(stage, "sky") && single) {
+        psStringAppend(&query, "\nGROUP BY sky_id HAVING count(stack_id) = 1");
     }
 
Index: trunk/ippTools/src/disttoolConfig.c
===================================================================
--- trunk/ippTools/src/disttoolConfig.c	(revision 32695)
+++ trunk/ippTools/src/disttoolConfig.c	(revision 32696)
@@ -63,4 +63,5 @@
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label",         0, "select by run label", NULL);
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-dist_group",    0, "select by dist_group", NULL);
+    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-singlefilter", 0, "select single filter runs (sky stage only)", false);
 
     psMetadataAddU64(definebyqueryArgs, PS_LIST_TAIL, "-limit",  0,  "limit result set to N items", 0);
