繼上篇《SQL 列轉行 合並多條記錄》后,有網友反饋新的需求還是不太會用。
現舉例說明
一,網友需要如下的效果:
其實,這個需求依然可以我上篇的方法進行解答,但為了實現分組,需要distinct group1,同時,為了根據key1,key2,key3是否相同進行分組,所以要用where進行連接。
語法格式:select .....from t1 where key1=a.key1 and key2=a.key2... for xml path('')
二,進入正題,代碼如下:
select distinct group1,key1,key2,key3, (select concat1+',' from concat where group1=a.group1 and key1=a.key1 and key2=a.key2 and key3=a.key3 for XML PATH('') ) as concat1, (select concat2+',' from concat where group1=a.group1 and key1=a.key1 and key2=a.key2 and key3=a.key3 for XML PATH('') ) as concat2, (select concat3+',' from concat where group1=a.group1 and key1=a.key1 and key2=a.key2 and key3=a.key3 for XML PATH('') ) as concat3 from concat a
三、效果如下:
說得不好,歡迎大家拍磚。