diff -ru webform-2.3/components/date.inc webform-2.3-sidfilter/components/date.inc
--- webform-2.3/components/date.inc	2008-10-08 21:51:44.000000000 +0200
+++ webform-2.3-sidfilter/components/date.inc	2008-12-17 17:51:31.000000000 +0200
@@ -300,15 +300,19 @@
  * @param $component
  *   An array of information describing the component, directly correlating to
  *   the webform_component database schema
+ * @param $sids
+ *   array of submission IDs (sid) to limit this analysis to
+ *   Optional
  * @return
  *   An array of data rows, each containing a statistic for this component's
  *   submissions.
  */
-function _webform_analysis_rows_date($component) {
+function _webform_analysis_rows_date($component, $sids=array()) {
+  $sidfilter = count($sids) ?  "AND sid in (".implode(",",$sids).")" : "";
   $query = 'SELECT no,data '.
     ' FROM {webform_submitted_data} '.
     ' WHERE nid = %d '.
-    ' AND  cid = %d '.
+    " AND  cid = %d $sidfilter".
     ' ORDER BY sid,no ASC ';
 
   $result = db_query($query, $component['nid'], $component['cid']);
diff -ru webform-2.3/components/email.inc webform-2.3-sidfilter/components/email.inc
--- webform-2.3/components/email.inc	2008-10-06 07:45:41.000000000 +0200
+++ webform-2.3-sidfilter/components/email.inc	2008-12-17 17:51:37.000000000 +0200
@@ -171,15 +171,19 @@
  * @param $component
  *   An array of information describing the component, directly correlating to
  *   the webform_component database schema
+ * @param $sids
+ *   array of submission IDs (sid) to limit this analysis to
+ *   Optional
  * @return
  *   An array of data rows, each containing a statistic for this component's
  *   submissions.
  */
-function _webform_analysis_rows_email($component) {
+function _webform_analysis_rows_email($component, $sids=array()) {
+  $sidfilter = count($sids) ?  "AND sid in (".implode(",",$sids).")" : "";
   $query = 'SELECT data '.
     ' FROM {webform_submitted_data} '.
     ' WHERE nid = %d '.
-    ' AND cid = %d';
+    " AND cid = %d $sidfilter";
   $nonblanks = 0;
   $submissions = 0;
   $wordcount = 0;
diff -ru webform-2.3/components/file.inc webform-2.3-sidfilter/components/file.inc
--- webform-2.3/components/file.inc	2008-10-08 21:51:44.000000000 +0200
+++ webform-2.3-sidfilter/components/file.inc	2008-12-17 17:51:48.000000000 +0200
@@ -450,15 +450,19 @@
  * @param $component
  *   An array of information describing the component, directly correlating to
  *   the webform_component database schema
+ * @param $sids
+ *   array of submission IDs (sid) to limit this analysis to
+ *   Optional
  * @return
  *   An array of data rows, each containing a statistic for this component's
  *   submissions.
  */
-function _webform_analysis_rows_file($component) {
+function _webform_analysis_rows_file($component, $sids=array()) {
+  $sidfilter = count($sids) ?  "AND sid in (".implode(",",$sids).")" : "";
   $query = 'SELECT data '.
     ' FROM {webform_submitted_data} '.
     ' WHERE nid = %d '.
-    ' AND cid = %d';
+    " AND cid = %d $sidfilter";
   $nonblanks = 0;
   $submissions = 0;
   $wordcount = 0;
diff -ru webform-2.3/components/grid.inc webform-2.3-sidfilter/components/grid.inc
--- webform-2.3/components/grid.inc	2008-10-08 21:51:44.000000000 +0200
+++ webform-2.3-sidfilter/components/grid.inc	2008-12-17 18:11:42.000000000 +0200
@@ -217,21 +217,25 @@
  * @param $component
  *   An array of information describing the component, directly correlating to
  *   the webform_component database schema.
+ * @param $sids
+ *   array of submission IDs (sid) to limit this analysis to
+ *   Optional
  * @return
  *   An array of data rows, each containing a statistic for this component's
  *   submissions.
  **/
-function _webform_analysis_rows_grid($component) {
+function _webform_analysis_rows_grid($component, $sids=array()) {
   // Generate the list of options and questions.
   $options = _webform_grid_options($component['extra']['options']);
   $questions = array_values(_webform_grid_options($component['extra']['questions']));
 
   // Generate a lookup table of results.
+  $sidfilter = count($sids) ?  "AND sid in (".implode(",",$sids).")" : "";
   $query = 'SELECT no, data, count(data) as datacount '.
     ' FROM {webform_submitted_data} '.
     ' WHERE nid = %d '.
     ' AND cid = %d '.
-    " AND data != '0' AND data != '' ".
+    " AND data != '0' AND data != '' $sidfilter ".
     ' GROUP BY no, data';
   $result = db_query($query, $component['nid'], $component['cid']);
   $counts = array();
Only in webform-2.3-sidfilter/components: grid.inc.orig
diff -ru webform-2.3/components/hidden.inc webform-2.3-sidfilter/components/hidden.inc
--- webform-2.3/components/hidden.inc	2008-09-06 22:51:36.000000000 +0200
+++ webform-2.3-sidfilter/components/hidden.inc	2008-12-17 17:52:03.000000000 +0200
@@ -112,15 +112,19 @@
  * @param $component
  *   An array of information describing the component, directly correlating to
  *   the webform_component database schema
+ * @param $sids
+ *   array of submission IDs (sid) to limit this analysis to
+ *   Optional
  * @return
  *   An array of data rows, each containing a statistic for this component's
  *   submissions.
  */
-function _webform_analysis_rows_hidden($component) {
+function _webform_analysis_rows_hidden($component, $sids=array()) {
+  $sidfilter = count($sids) ?  "AND sid in (".implode(",",$sids).")" : "";
   $query = 'SELECT data '.
     ' FROM {webform_submitted_data} '.
     ' WHERE nid = %d '.
-    ' AND cid = %d';
+    " AND cid = %d $sidfilter";
   $nonblanks = 0;
   $submissions = 0;
   $wordcount = 0;
diff -ru webform-2.3/components/select.inc webform-2.3-sidfilter/components/select.inc
--- webform-2.3/components/select.inc	2008-10-22 21:38:59.000000000 +0200
+++ webform-2.3-sidfilter/components/select.inc	2008-12-17 17:52:18.000000000 +0200
@@ -279,18 +279,22 @@
  * @param $component
  *   An array of information describing the component, directly correlating to
  *   the webform_component database schema
+ * @param $sids
+ *   array of submission IDs (sid) to limit this analysis to
+ *   Optional
  * @return
  *   An array of data rows, each containing a statistic for this component's
  *   submissions.
  */
-function _webform_analysis_rows_select($component) {
+function _webform_analysis_rows_select($component, $sids=array()) {
   $options = _webform_select_options($component['extra']['items']);
+  $sidfilter = count($sids) ?  "AND sid in (".implode(",",$sids).")" : "";
 
   $query = 'SELECT data, count(data) as datacount '.
     ' FROM {webform_submitted_data} '.
     ' WHERE nid = %d '.
     ' AND cid = %d '.
-    " AND data != '0' AND data != '' ".
+    " AND data != '0' AND data != '' $sidfilter ".
     ' GROUP BY data ';
   $result = db_query($query, $component['nid'], $component['cid']);
   $rows = array();
diff -ru webform-2.3/components/textarea.inc webform-2.3-sidfilter/components/textarea.inc
--- webform-2.3/components/textarea.inc	2008-09-06 22:51:36.000000000 +0200
+++ webform-2.3-sidfilter/components/textarea.inc	2008-12-17 17:52:23.000000000 +0200
@@ -133,15 +133,19 @@
  * @param $component
  *   An array of information describing the component, directly correlating to
  *   the webform_component database schema
+ * @param $sids
+ *   array of submission IDs (sid) to limit this analysis to
+ *   Optional
  * @return
  *   An array of data rows, each containing a statistic for this component's
  *   submissions.
  */
-function _webform_analysis_rows_textarea($component) {
+function _webform_analysis_rows_textarea($component, $sids=array()) {
+  $sidfilter = count($sids) ?  "AND sid in (".implode(",",$sids).")" : "";
   $query = 'SELECT data '.
     ' FROM {webform_submitted_data} '.
     ' WHERE nid = %d '.
-    ' AND cid = %d';
+    " AND cid = %d $sidfilter";
   $nonblanks = 0;
   $submissions = 0;
   $wordcount = 0;
diff -ru webform-2.3/components/textfield.inc webform-2.3-sidfilter/components/textfield.inc
--- webform-2.3/components/textfield.inc	2008-10-14 20:20:02.000000000 +0200
+++ webform-2.3-sidfilter/components/textfield.inc	2008-12-17 17:52:30.000000000 +0200
@@ -178,15 +178,19 @@
  * @param $component
  *   An array of information describing the component, directly correlating to
  *   the webform_component database schema
+ * @param $sids
+ *   array of submission IDs (sid) to limit this analysis to
+ *   Optional
  * @return
  *   An array of data rows, each containing a statistic for this component's
  *   submissions.
  */
-function _webform_analysis_rows_textfield($component) {
+function _webform_analysis_rows_textfield($component, $sids=array()) {
+  $sidfilter = count($sids) ?  "AND sid in (".implode(",",$sids).")" : "";
   $query = 'SELECT data '.
     ' FROM {webform_submitted_data} '.
     ' WHERE nid = %d '.
-    '  AND cid = %d';
+    "  AND cid = %d $sidfilter";
   $nonblanks = 0;
   $submissions = 0;
   $wordcount = 0;
diff -ru webform-2.3/components/time.inc webform-2.3-sidfilter/components/time.inc
--- webform-2.3/components/time.inc	2008-10-08 21:51:44.000000000 +0200
+++ webform-2.3-sidfilter/components/time.inc	2008-12-17 17:52:46.000000000 +0200
@@ -251,15 +251,19 @@
  * @param $component
  *   An array of information describing the component, directly correlating to
  *   the webform_component database schema.
+ * @param $sids
+ *   array of submission IDs (sid) to limit this analysis to
+ *   Optional
  * @return
  *   An array of data rows, each containing a statistic for this component's
  *   submissions.
  */
-function _webform_analysis_rows_time($component) {
+function _webform_analysis_rows_time($component, $sids=array()) {
+  $sidfilter = count($sids) ?  "AND sid in (".implode(",",$sids).")" : "";
   $query = 'SELECT no,data '.
     ' FROM {webform_submitted_data} '.
     ' WHERE nid = %d '.
-    ' AND  cid = %d '.
+    " AND  cid = %d $sidfilter".
     ' ORDER BY sid,no ASC ';
 
   $result = db_query($query, $component['nid'], $component['cid']);
Only in webform-2.3-sidfilter: webform-analysis-filter.diff
diff -ru webform-2.3/webform_report.inc webform-2.3-sidfilter/webform_report.inc
--- webform-2.3/webform_report.inc	2008-10-08 21:51:44.000000000 +0200
+++ webform-2.3-sidfilter/webform_report.inc	2008-12-17 17:57:19.000000000 +0200
@@ -374,7 +374,7 @@
 /**
  * Provides a simple analysis of all submissions to a webform.
  */
-function webform_results_analysis($node) {
+function webform_results_analysis($node, $sids = array()) {
   $rows = array();
   $question_number = 0;
 
@@ -390,7 +390,7 @@
     // Do component specific call.
     $analysis_function = "_webform_analysis_rows_". $component['type'];
     if (function_exists($analysis_function)) {
-      $crows = $analysis_function($component);
+      $crows = $analysis_function($component,$sids);
       if (is_array($crows)) {
         $row[0] = array('data' => '<strong>'. $question_number .'</strong>', 'rowspan' => count($crows) + 1, 'valign' => 'top');
         $row[1] = array('data' => '<strong>'. $component['name'] .'</strong>', 'colspan' => '10');
