【问题标题】:How to use CROSS APPLY XML PATH如何使用 CROSS APPLY XML PATH
【发布时间】:2011-07-26 09:25:30
【问题描述】:

如何使用CROSS APPLYFOR XML 规范化包含信息列表的表格?

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 来完成。还有其他方法吗?

【问题讨论】:

标签: sql sql-server xml sql-server-2008 cross-apply


【解决方案1】:

这是经过测试和工作的:

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    相关资源
    最近更新 更多