要列出的CachéSQL列

时间:2014-09-08 18:13:58

标签: sql intersystems-cache

您是否知道在单个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

2 个答案:

答案 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配对,查询的整体结构更容易理解。