【发布时间】:2014-01-28 19:30:40
【问题描述】:
我有一个看起来像这样的表:
Event ID Name
1 Bob
1 Steve
1 Tom
2 Bob
3 Steve
3 Tom
有数千个事件 ID 和数十个唯一名称。我想要一个 SQL 查询来返回下表:
Event ID Names
1 Bob, Steve, Tom
2 Bob
3 Steve, Tom
我正在寻找像 SUM() 或 AVG() 这样的聚合函数,除了它连接字符串而不是做数学运算。
编辑:我无法在这台上使用 MS Access。
编辑 2:我意识到这在客户端语言中是微不足道的,但我正在尝试查看是否可以获得全 SQL 解决方案。
【问题讨论】:
-
您使用的是哪种 DBMS? here 发布了一个类似的问题。 MySQL 有
GROUP_CONCAT(),MSSQL 有STUFF(),Oracle 有LISTAGG()。 -
你说的是ORACLE吗? mysql?数据库服务器? DB2?
-
在 MSSQL 中,这样做很痛苦,我通常最终会为连接进行 CLR 聚合。 PostgreSQL、Oracle 和 MySQL 很容易做到这一点。
-
为什么要从 SQL 执行此操作(而不是仅使用“正常”JOIN 结果)? SQL 用于检索数据,而不是格式化。可以使用您选择的客户端语言轻松完成格式化。
-
@JeremyHolovacs 为什么说 MySQL 对此感到“痛苦”——GROUP_CONCAT 有问题吗?