2013-10-10 54 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的