diff --git a/plugins/views_plugin_query_default.inc b/plugins/views_plugin_query_default.inc
index 030c5ea..a09f13d 100644
--- a/plugins/views_plugin_query_default.inc
+++ b/plugins/views_plugin_query_default.inc
@@ -1205,7 +1205,9 @@ class views_plugin_query_default extends views_plugin_query {
       }
       // This is a formula, using no tables.
       elseif (empty($field['table'])) {
-        $non_aggregates[] = $fieldname;
+        if (!in_array($fieldname, $non_aggregates)) {
+          $non_aggregates[] = $fieldname;
+        }
         $placeholders = !empty($field['placeholders']) ? $field['placeholders'] : array();
         $query->addExpression($string, $fieldname, $placeholders);
       }
@@ -1213,10 +1215,15 @@ class views_plugin_query_default extends views_plugin_query {
       elseif ($this->distinct && !in_array($fieldname, $this->groupby)) {
         // d7cx: This code was there, apparently needed for PostgreSQL
         // $string = db_driver() == 'pgsql' ? "FIRST($string)" : $string;
+        if (!in_array($string, $non_aggregates)) {
+          $non_aggregates[] = $string;
+        }
         $query->addField(!empty($field['table']) ? $field['table'] : $this->base_table, $field['field'], $fieldname);
       }
       elseif (empty($field['aggregate'])) {
-        $non_aggregates[] = $fieldname;
+        if (!in_array($string, $non_aggregates)) {
+          $non_aggregates[] = $string;
+        }
         $query->addField(!empty($field['table']) ? $field['table'] : $this->base_table, $field['field'], $fieldname);
       }
 
@@ -1248,7 +1255,7 @@ class views_plugin_query_default extends views_plugin_query {
   function query($get_count = FALSE) {
     // Check query distinct value.
     if (empty($this->no_distinct) && $this->distinct && !empty($this->fields)) {
-      if ($this->pure_distinct === FALSE){
+      if ($this->pure_distinct === FALSE) {
         $base_field_alias = $this->add_field($this->base_table, $this->base_field);
         $this->add_groupby($base_field_alias);
       }
diff --git a/tests/views_groupby.test b/tests/views_groupby.test
index 718d8dc..943679e 100644
--- a/tests/views_groupby.test
+++ b/tests/views_groupby.test
@@ -108,6 +108,88 @@ class ViewsQueryGroupByTest extends ViewsSqlTest {
   }
 
   /**
+   * Tests aggregate count feature.
+   */
+  public function testAggregateAmbiguity() {
+    // Create 4 nodes of type1
+    $type1 = $this->drupalCreateContentType();
+
+    $node_1 = array(
+      'type' => $type1->type,
+    );
+    $this->drupalCreateNode($node_1);
+    $this->drupalCreateNode($node_1);
+    $this->drupalCreateNode($node_1);
+    $this->drupalCreateNode($node_1);
+
+    $view = $this->viewsAggregateAmbiguityView();
+    $output = $view->execute_display();
+
+    $this->assertEqual(count($view->result), 1, 'Make sure there are no ambiguity problems with the group by operation.');
+  }
+
+  public function viewsAggregateAmbiguityView() {
+    $view = new view();
+    $view->name = 'aggregate_ambiguity';
+    $view->description = '';
+    $view->tag = 'default';
+    $view->base_table = 'node';
+    $view->human_name = '';
+    $view->core = 7;
+    $view->api_version = '3.0';
+    $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+    /* Display: Master */
+    $handler = $view->new_display('default', 'Master', 'default');
+    $handler->display->display_options['use_more_always'] = FALSE;
+    $handler->display->display_options['group_by'] = TRUE;
+    $handler->display->display_options['access']['type'] = 'none';
+    $handler->display->display_options['cache']['type'] = 'none';
+    $handler->display->display_options['query']['type'] = 'views_query';
+    $handler->display->display_options['exposed_form']['type'] = 'basic';
+    $handler->display->display_options['pager']['type'] = 'full';
+    $handler->display->display_options['style_plugin'] = 'default';
+    $handler->display->display_options['row_plugin'] = 'fields';
+    /* Field: COUNT(Content revision: Nid) */
+    $handler->display->display_options['fields']['nid']['id'] = 'nid';
+    $handler->display->display_options['fields']['nid']['table'] = 'node_revision';
+    $handler->display->display_options['fields']['nid']['field'] = 'nid';
+    $handler->display->display_options['fields']['nid']['group_type'] = 'count';
+    $handler->display->display_options['fields']['nid']['alter']['alter_text'] = 0;
+    $handler->display->display_options['fields']['nid']['alter']['make_link'] = 0;
+    $handler->display->display_options['fields']['nid']['alter']['word_boundary'] = 1;
+    $handler->display->display_options['fields']['nid']['alter']['ellipsis'] = 1;
+    $handler->display->display_options['fields']['nid']['alter']['strip_tags'] = 0;
+    $handler->display->display_options['fields']['nid']['alter']['trim'] = 0;
+    $handler->display->display_options['fields']['nid']['alter']['html'] = 0;
+    $handler->display->display_options['fields']['nid']['hide_empty'] = 0;
+    $handler->display->display_options['fields']['nid']['empty_zero'] = 0;
+    /* Field: Content: Nid */
+    $handler->display->display_options['fields']['nid_1']['id'] = 'nid_1';
+    $handler->display->display_options['fields']['nid_1']['table'] = 'node';
+    $handler->display->display_options['fields']['nid_1']['field'] = 'nid';
+    $handler->display->display_options['fields']['nid_1']['alter']['alter_text'] = 0;
+    $handler->display->display_options['fields']['nid_1']['alter']['make_link'] = 0;
+    $handler->display->display_options['fields']['nid_1']['alter']['word_boundary'] = 1;
+    $handler->display->display_options['fields']['nid_1']['alter']['ellipsis'] = 1;
+    $handler->display->display_options['fields']['nid_1']['alter']['strip_tags'] = 0;
+    $handler->display->display_options['fields']['nid_1']['alter']['trim'] = 0;
+    $handler->display->display_options['fields']['nid_1']['alter']['html'] = 0;
+    $handler->display->display_options['fields']['nid_1']['hide_empty'] = 0;
+    $handler->display->display_options['fields']['nid_1']['empty_zero'] = 0;
+    /* Contextual filter: Content: Type */
+    $handler->display->display_options['arguments']['type']['id'] = 'type';
+    $handler->display->display_options['arguments']['type']['table'] = 'node';
+    $handler->display->display_options['arguments']['type']['field'] = 'type';
+    $handler->display->display_options['arguments']['type']['default_action'] = 'summary';
+    $handler->display->display_options['arguments']['type']['default_argument_type'] = 'fixed';
+    $handler->display->display_options['arguments']['type']['summary']['format'] = 'default_summary';
+
+
+    return $view;
+  }
+
+  /**
    * @param $group_by
    *   Which group_by function should be used, for example sum or count.
    */
