diff --git a/includes/database/select.inc b/includes/database/select.inc
index 16091061ba3979932bf62d866eafa244ac19bab9..9046afbdf7bb17774c841f4e37fc118ff0e04820 100644
--- a/includes/database/select.inc
+++ b/includes/database/select.inc
@@ -1362,7 +1362,7 @@ public function countQuery() {
     // Create our new query object that we will mutate into a count query.
     $count = clone($this);
 
-    $group_by = array_keys($count->getGroupBy());
+    $group_by = drupal_map_assoc(array_values($count->getGroupBy()));
 
     if (!$count->distinct) {
       // When not executing a distinct query, we can zero-out existing fields
diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test
index db74bd9e5e05282c0dac0c0640f82e22e200d065..32742e0c1cd6b6692b13317ecc7ff79cd4159b03 100644
--- a/modules/simpletest/tests/database_test.test
+++ b/modules/simpletest/tests/database_test.test
@@ -2032,6 +2032,15 @@ class DatabaseSelectComplexTestCase extends DatabaseTestCase {
     $count = $query->countQuery()->execute()->fetchField();
 
     $this->assertEqual($count, 3, t('Counted the correct number of records.'));
+
+    // Test wth an alias.
+    $query = db_select('test_task');
+    $pid_field = $query->addField('test_task', 'pid', 'pid_alias');
+    $query->groupBy('pid_alias');
+
+    $count = $query->countQuery()->execute()->fetchField();
+
+    $this->assertEqual($count, 3, t('Counted the correct number of records.'));
   }
 
   /**