[SQL] 將多列資料合併 使用 For XML Path
當想要將同一資料欄的資料合併顯示時,可以考慮採取 使用 for xml path 。 就像以下資料
SELECT [OrderID]
,[ProductID]
,[UnitPrice]
,[Quantity]
,[Discount]
FROM [Northwind].[dbo].[Order Details]
WHERE [OrderID]='10248'
想要把同個 OrderID 資料的 ProductID 和 UnitPrice 合併在一起顯示的時候,使用 for xml path
SELECT
',' +cast(ProductID AS NVARCHAR) + '--' + Cast([UnitPrice] AS NVARCHAR )
FROM [Northwind].[dbo].[Order Details]
WHERE [OrderID]='10248'
for xml path('')
然後調整一下整理一下,將多餘的分隔符號用 stuff 移除
select [OrderID], stuff(mergingOd.pu,1,1,'')
from
(
select [OrderID],
(
SELECT
',' +cast(ProductID AS NVARCHAR) + '--' + Cast([UnitPrice] AS NVARCHAR )
FROM [Northwind].[dbo].[Order Details]
WHERE [OrderID]=od2.[OrderID]
for xml path('')
) pu
from [Northwind].[dbo].[Order Details] od2
GROUP BY [OrderID]
) as mergingOd
For XML Path 的改變節點名稱輸出
SELECT
cast(ProductID as varchar)
FROM [Northwind].[dbo].[Order Details]
WHERE [OrderID]='10248'
for xml path('pid')
參考資料: MSDN_FOR XML 子句的基本語法 MSDN_搭配 FOR XML 使用 PATH 模式 MSDN_STUFF (Transact-SQL)