如何选择除最后一列之外的所有列,并将最后一列作为逗号分隔值

时间:2018-02-13 00:49:02

标签: sql sql-server coalesce

我有一张包含以下结构的表格。它有8列,其中1st 7有些时间包含重复,最后一列可以有不同的值(尽管没有唯一值)。

enter image description here

如何为前7列选择distinct,然后将最后一列显示为逗号分隔值。

所以最后一列应该如下所示,

enter image description here

1 个答案:

答案 0 :(得分:1)

在子查询中选择不同的7个值,然后执行XML STUFF以合并值

请注意“ - 在此处添加您的其他字段”

示例

Select A.*
      ,CollectionDate  = Stuff((Select Distinct ',' +cast(CollectionDate as varchar(max))
                                 From  YourTable 
                                 Where Quantity=A.Quantity 
                                   and Protein =A.Protein
                                   and Carb    =A.Carb
                                   -- Add your other fields here
                                 For XML Path ('')),1,1,'') 
 From (Select Distinct 
              Quantity
             ,Protein
             ,Carb
             -- Add your other fields here
        From  YourTable ) A