在 SQL Sever 中要將不同 Row 的某個欄位裡面的值合併起來用

在 SQL Sever 中要將不同 Row 的某個欄位裡面的值合併起來用, 

SQL Server 提供了 FOR XML 語法,搭配 PATH 模式就能輕鬆做到。

資料來源:https://dotblogs.com.tw/supershowwei/2016/01/26/145353

 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(原字串, 起始位置, 移除長度, 替換字串)

資料來源:https://dotblogs.com.tw/supershowwei/2016/01/26/145353