尝试将表中的多行组合成一行

时间:2013-10-10 13:52:12

标签: sql sql-server sql-server-2008-r2 sql-server-group-concat

我一直在努力解决这个问题,现在我一直陷入死胡同。也许这里有人可以帮助我。我在一家公司工作,我们将收到一份我们要修理的单位的档案。在某些情况下,我们会收到一份维修索赔,其中包含多个单元。我只有一个字段来导入序列号,我需要结合具体索赔的行数。

例如,我会得到的文件如下:

ClaimNumber       SerialNumber
555                12345
555                123456
555                1234567
556                4321
557                3421
558                9876
558                98765

所以我需要导出这个表,将序列号组合成一个字段,如:

ClaimNumner       SerialNumber
555                12345, 123456, 1234567
556                4321
557                3421
558                9876, 98765

我受限于以这种格式接收文件,所以这就是我必须要处理的全部内容。文件中还有其他字段,但我认为这些是我应该关注的。如果有人有任何想法,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:1)

鉴于您的表名为Claim,我认为应该这样做,(未经测试)

Select Main.ClaimNumber,
   Left(Main.Serials,Len(Main.Serials)-1) As "Serials" From(Select distinct T2.ClaimNumber, 
       (Select T1.SerialNumber + ',' AS [text()]
        From Claim T1
        Where T1.ClaimNumber = T2.ClaimNumber
        ORDER BY T1.ClaimNumber
        For XML PATH ('')) [Serials]
 From Claim T2) [Main]