2016-10-15 13 views
0
KEY  DATE  STATUS  Item ORDEREDQTY SHIPPEDQTY  Concat (ouput) 
1  05/11/2015 Dispatch 123  3   1   1 | 05/11/2015 | Dispatch | 123 | 3 | 1 | 321 | 2 | 1 
1  05/11/2015 Dispatch 321  2   1 
2  14/11/2015 Dispatch 456  3   2   2 | 14/11/2015 | Dispatch | 456 | 3 | 2 | 678 | 2 | 1 
2  14/11/2015 Dispatch 678  2   1 

上記の操作方法は?キーマッチに基づいて区切り記号で値を連結

Keyが一致する場合、Item,originalqtyおよびshipqtyを連結する必要があります。上記のキーの値は1で、出力の列にはキーが1の値を取得し、最後の3つの列を連結する必要があります。

答えて

1
Declare @YourTable table ([KEY] int,DATE date,STATUS varchar(50),Item int,ORDEREDQTY int,SHIPPEDQTY int) 
Insert Into @YourTable values 
(1,'2015-11-05','Dispatch',123,3,1), 
(1,'2015-11-05','Dispatch',321,2,1), 
(2,'2015-11-14','Dispatch',456,3,2), 
(2,'2015-11-14','Dispatch',678,2,1) 

Select A.* 
     ,ConcatString=Case when RowNr=1 then cast([Key] as varchar(25)) + ' | ' + cast(Date as varchar(25)) + ' | ' + Status + ' | ' + B.String else '' end 
From (Select *,RowNr = Row_Number() over (Partition By [KEY] Order by (Select NULL)) From @YourTable) A 
Cross Apply (
       Select String=Stuff((Select ' | ' + cast(Item as varchar(25)) + 
             ' | ' + cast(ORDEREDQTY as varchar(25)) + 
             ' | ' + cast(SHIPPEDQTY as varchar(25)) 
             From @YourTable 
             Where [Key]=A.[Key] 
             For XML Path ('')),1,3,'') 

      ) B 

戻り

enter image description here

+0

cappeletti: - ソリューションのための、しかし、あなたのソリューションの発送と日付であなたは非常に多くのおかげで、私はしたくないその繰り返しています。これで私を助けてもらえますか? – Somashekhar

+0

@SomashekharKenduleすぐに –

+0

@SomashekharKenduleクイックフィックス。更新された回答 –

関連する問題