2016-09-27 5 views
2

Я сейчас пытаюсь SELECTDISTINCT FirstNames в GROUP, используя Microsoft Access 2010.
Упрощенные соответствующие столбцы моей таблице выглядит следующим образом:MS-Access SQL DISTINCT GROUP BY

+----+-------------+-----------+ 
| ID | GroupNumber | FirstName | 
+----+-------------+-----------+ 
| 1 |   1 | Peter  | 
| 2 |   1 | Bob  | 
| 3 |   1 | Peter  | 
| 4 |   2 | Rosemary | 
| 5 |   2 | Jamie  | 
| 6 |   3 | Peter  | 
+----+-------------+-----------+ 

Моя текущая таблица содержит два столбца, к которым я хочу применить этот процесс (отдельно), но я должен просто повторить этот процесс для другого столбца. Номер группы столбцов является упрощением, моя таблица фактически группирует все строки за десять дней вместе, но я уже решил эту проблему.

И я хотел бы, чтобы вернуть это:

+-------------+------------+ 
| GroupNumber | FirstNames | 
+-------------+------------+ 
|   1 | Peter  | 
|   1 | Bob  | 
|   2 | Rosemary | 
|   2 | Jamie  | 
|   3 | Peter  | 
+-------------+------------+ 

Это означает, что я хочу все Distinct FirstNames для каждой группы.
Обычный DISTINCT игнорирует границы группы и упоминает только один раз. Все агрегированные функции уменьшают мой результат до одного значения или вообще не работают с строками. Доступ также не поддерживает SELECT столбцы, которые не являются агрегатами или в операторе GROUP BY.

Все остальные ответы, которые я нашел либо хотят, чтобы заполнить, не применимы к MS Access, либо решаются путем обработки данных способами, не применимыми к моему делу. (стандартизованные языки хорошая вещь, не так ли?)

Мой текущий (недействительный) запрос выглядит следующим образом:

SELECT GroupNumber, 
    DISTINCT FirstNames -- This is illegal, distinct applies to all 
         -- columns and doesn't respect groups. 
FROM Example AS b 
-- Complicated stuff to make the groups 
GROUP BY GroupNumber; 

Этот запрос является один раз вещь, и используется для анализа 58000 строка Excel таблица экспортируется из другой базы данных (не моя ошибка), поэтому оптимизация для времени выполнения не требуется.

Я хотел бы достичь этого исключительно через SQL и без VBA, если это вообще возможно.

+0

Просто используйте 'SELECT DISTINCT GroupNumber, FirstNames' – Lamak

+0

Но что бы вернуть groupNumber: 1,2, 3 и FirstNames: Питер, Боб, Розмари, Джейми, Питер –

+0

Нет, не будет. Вы попробовали? – Lamak

ответ

2

Это должно работать:

SELECT DISTINCT GroupNumber, FirstNames 
FROM Example AS b 
1

Решение этой проблемы было бы группу по столбцам GroupNumber и FirstName одновременно. Запрос представлен ниже:

Select GroupNumber, FirstName 
From input 
Group By GroupNumber, FirstName 

(? Стандартизованные языки хорошая вещь, а не они)

Смежные вопросы