我目前正在尝试使用Microsoft Access 2010 SELECT
DISTINCT FirstNames
GROUP
。{
我表格的简化相关列如下所示:
+----+-------------+-----------+
| 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
会忽略组边界,只提一次Peter。所有聚合函数都会将输出减少到只有一个值,或者根本不对字符串起作用。 Access也不支持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 :(得分:2)
这应该有效:
SELECT DISTINCT GroupNumber, FirstNames
FROM Example AS b
答案 1 :(得分:1)
此问题的解决方案将同时按GroupNumber和FirstName列进行分组。查询如下:
Select GroupNumber, FirstName
From input
Group By GroupNumber, FirstName
(标准化语言是一件好事,不是吗?)