组记录基于数据集中的一个列名称,并显示与在SQL中分组记录的列对应的所有值

时间:2016-09-13 05:56:21

标签: sql sql-server group-by

例如,如果我有一个数据集如下

ID ITEM
1   A
2   B
3   C
1   B
1   C
2   A

然后需要一个sql查询,它提供如下输出:

ID  ITEM
1    A, B, C
2    B, A
3    C

这是基于ID进行分组的方法,并显示与SQL中其他列属性相关的所有值。

1 个答案:

答案 0 :(得分:0)

将表名替换为您的表名,并使用以下查询:

Select src.ID,
       src.Items [Items]
    From
        (
            Select distinct T2.ID, 
                (
                    STUFF((Select T1.Item + ',' AS [text()]
                    From [Yourtable-Name] T1
                    Where T1.ID = T2.ID
                    ORDER BY T1.ID
                    For XML PATH ('')),1,1,'')
                ) [Items]
            From [YourTableName] T2
        ) [src]