在 SQL Sever 中要將不同 Row 的某個欄位裡面的值合併起來用,
SQL Server 提供了 FOR XML 語法,搭配 PATH 模式就能輕鬆做到。
SQL Server 提供了 FOR XML 語法,搭配 PATH 模式就能輕鬆做到。
首先先使用 FOR XML 語法搭配 PATH 模式把欄位合併的結果先 SELECT 出來。
SELECT ProductId, ( SELECT ',' + PO_A.[Owner] FROM ProductOwner PO_A
WHERE PO_A.ProductId = PO_B.ProductId FOR XML PATH('') )
AS Owners FROM ProductOwner PO_B
使用 DISTINCT 語法過濾重複的資料
SELECT ProductId, ( SELECT ',' + PO_A.[Owner] FROM ProductOwner PO_A
WHERE PO_A.ProductId = PO_B.ProductId FOR XML PATH('') )
AS Owners FROM ProductOwner PO_B
使用 STUFF 去除掉第一個多餘的逗號
SELECT DISTINCT ProductId, STUFF(( SELECT ',' + PO_A.[Owner]
FROM ProductOwner PO_A WHERE PO_A.ProductId = PO_B.ProductId FOR XML PATH('') ), 1, 1, '')
AS Owners FROM ProductOwner PO_B
SUTFF 函式的表達式 STUFF(原字串, 起始位置, 移除長度, 替換字串)