您是否知道在单个SQL语句中创建下面的结果集的任何方法?
记录集:
ID AC9 Value
1 11111111 A
2 11111111 B
3 11111111 C
4 11111111 D
5 22222222 B
6 22222222 C
7 22222222 D
8 22222222 E
9 22222222 F
10 22222222 G
结果集:
AC9 MyValue
11111111 A,B,C,D
22222222 B,C,D,E,F,G
答案 0 :(得分:5)
使用list
函数,缓存有一种非常简单的方法来解决此问题。
select distinct ac9, list(value %FOREACH(ac9))
from (select 1 as id, 11111111 as ac9, 'A' as value
union all select 2, 11111111, 'B'
union all select 3, 11111111, 'C'
union all select 4, 11111111, 'D'
union all select 5, 22222222, 'B'
union all select 6, 22222222, 'C'
union all select 7, 22222222, 'D'
union all select 8, 22222222, 'E'
union all select 9, 22222222, 'F'
union all select 10, 22222222, 'G') sub
答案 1 :(得分:2)
也可以在LIST()聚合中使用GROUP BY语句而不是%FOREACH函数:
SELECT AC9, LIST(Value) As MyValue FROM Source.Table GROUP BY AC9
虽然LIST()不是标准的,但我认为由于聚合函数+ GROUP BY配对,查询的整体结构更容易理解。