2013-10-10 100 views
-1

我一直试图弄清楚这一点,现在我一直跑到死路一条。也许这里有人可以帮助我。我在一家公司工作,我们将收到一份我们要修理的单位的档案。在某些情况下,我们会收到一份维修申请,其中包含多个设备。我只有一个字段可以导入序列号,我需要结合具体索赔的行数。试图将一个表中的多行组合成一行

比如我会得到的文件看起来像:

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 

我限制在接收该格式的文件,所以这是我必须处理的。文件中还有其他字段,但我认为这些是我应该看的。让我知道如果任何人有任何想法。谢谢!!

+0

可能重复: //www.stackoverflow.com/questions/273238/how-to-use-group-by-to-concatenate-strings-in-sql-server) – Taryn

+0

文件中各列之间的实际分隔符是什么?它是一个逗号,一个制表符,8个空格,我可以进行其他猜测吗? –

+0

我从他们那里收到的文件是用逗号分隔的 – user2867287

回答

1

鉴于您的表名为索赔的话,我觉得这个应该这样做,(未测试)

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] 
[如何使用GROUP BY来连接字符串中的SQL Server?(HTTP的