【記錄】sqlserver列轉行查詢 並將查詢結果用逗號分隔開

qq_34785454發表於2020-12-25

查詢若干張表,其中有一對多的關係,需求希望能把“多”的那張表的資料在一行輸出,用逗號分隔開。
sqlserver和oracle一樣,自帶了這樣的函式。

先上sql語句:

SELECT
	STUFF ( ( SELECT ',' + a.name FROM a WHERE b.id = a.business_id and a.name = '名字' order by a.time desc FOR XML PATH ( '' ) ), 1, 1, '' ) AS Aname,
	b.name
from b
where b.name = '另一個名字'

其中

SELECT ',' + a.name FROM a WHERE b.id = a.business_id and a.name = '名字' order by a.time desc FOR XML PATH ( '' )

這一部分已經可以實現列轉行並用逗號分隔了,但是輸出的是這樣的格式:
,名字1,名字2,名字3

所以需要在外面再呼叫STUFF 的函式進行裁剪,把第一個逗號去掉,這樣就可以了。

不過感覺還是oracle更方便,沒記錯的話好像是隻調一個函式就都給安排的明明白白。

相關文章