3

我正在使用 SQL Server 和 TSQL:

我想做的是在另一列上使用 group by 时在一列上用逗号分隔值。请参阅下面的数据示例。

col1 --- col2

1121 美国广播公司
第 1123 节
第1335章
第1121章
1121 美国广播公司

我想在“col1”上分组并计算记录数,但如果数据不同,我也想在 col2 上连接。例如,使用值“1121”作为参考,请参见下面的数据输出。

数量 --- col1 --- col2

3 1121 abc, 定义
1 1123 aee
1 1335 afg

我想过也许使用 COALESCE,但我不确定在另一列上使用 group by 时如何实现它。

任何帮助将不胜感激。

4

1 回答 1

5

这是一个完整的,经过测试的工作示例。

create table tmp (col1 varchar(100), col2 varchar(100));
insert into tmp values ('1121',    'abc');
insert into tmp values ('1123',    'aee');
insert into tmp values ('1335',    'afg');
insert into tmp values ('1121',    'def');
insert into tmp values ('1121',    'abc');

SELECT 
distinct r.col1,
       STUFF((SELECT distinct ','+ a.col2
               FROM tmp a
             WHERE r.col1 = a.col1
            FOR XML PATH(''), TYPE).value('.','VARCHAR(max)'), 1, 1, ''),
       (select COUNT(*) cnt from tmp a where r.col1 = a.col1) cnt
 FROM tmp r

结果

1121    abc,def 3
1123    aee     1
1335    afg     1

参考:在这里 使用 OMG Ponies 的答案作为指南。

于 2012-07-05T14:22:58.230 回答