1
如何使用CROSS APPLY
和FOR XML
來標準化包含信息列表的表格?如何使用CROSS APPLY XML PATH
Product Orderid
P1 1,2,3
P2 1,3
P3 1
應該歸像下面
P1 1
P1 2
P1 3
P2 1
P2 3
P3 1
我認爲它可以與CROSS APPLY FOR XML
完成。還有其他的方式嗎?
如何使用CROSS APPLY
和FOR XML
來標準化包含信息列表的表格?如何使用CROSS APPLY XML PATH
Product Orderid
P1 1,2,3
P2 1,3
P3 1
應該歸像下面
P1 1
P1 2
P1 3
P2 1
P2 3
P3 1
我認爲它可以與CROSS APPLY FOR XML
完成。還有其他的方式嗎?
這是測試工作:
SELECT * INTO #T
FROM (
SELECT 'P1' Product, '1,2,3' OrderId
UNION SELECT 'P2', '1,3'
UNION SELECT 'P3', '1') x;
WITH S AS (
SELECT product, x.t
FROM #T cross apply
(select convert(xml, N'<root><r>' + replace(orderid,',','</r><r>') + '</r></root>') t) x
)
SELECT s.Product, r.value('.', 'int') OrderId
FROM s cross apply t.nodes('//root/r') as records(r);
DROP TABLE #T;
很多在這個問題上可能相關的信息的:http://stackoverflow.com/questions/697519/split-function-equivalent-in-tsql –
@邁克爾:感謝您的編輯。你讓它變得有意義。 Tanq – Shine