【发布时间】:2017-06-22 04:58:49
【问题描述】:
光环,
我希望你能帮助我。我正在使用 SQL Server。 我有这样的 XML 数据:
<Root>
<Header>
<refNo>S350282535-100060</refNo>
<doNumber>0</doNumber>
</Header>
<Header>
<refNo>S350282535-100061</refNo>
<doNumber>1</doNumber>
</Header>
<Detail>
<item>114495</item>
<qty>2</qty>
<uom>PC</uom>
<refNo>S350282535-100060</refNo>
<remarks>-</remarks>
<reason>-</reason>
</Detail>
<Detail>
<item>114496</item>
<qty>2</qty>
<uom>PC</uom>
<refNo>S350282535-100061</refNo>
<remarks>-</remarks>
<reason>-</reason>
</Detail>
<Detail>
<item>114497</item>
<qty>2</qty>
<uom>PC</uom>
<refNo>S350282535-100061</refNo>
<remarks>-</remarks>
<reason>-</reason>
</Detail>
</Root>
我怎样才能得到这种数据:
refNo doNumber Item qty uom
--------------------------------------------------------------------
S350282535-100060 0 114495 2 PC
S350282535-100061 1 114496 2 PC
S350282535-100061 1 114497 2 PC
这是我已经尝试过的查询:
DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX), @flagParameter AS
INT
SELECT @XML = XMLData FROM XMLwithOpenXML
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML
SET @flagParameter = 2
SELECT item, qty,uom, refNo, remarks, reason
FROM OPENXML(@hDoc, 'Root/Detail',@flagParameter)
WITH
(
item [int],
qty [int],
uom [nvarchar] (6),
refNo [nvarchar] (50),
remarks [nvarchar] (100),
reason [nvarchar] (100)
)
SELECT refNo, doNumber
FROM OPENXML(@hDoc, 'Root/Header',@flagParameter)
WITH
(
refNo [nvarchar](50),
doNumber [int]
)
SELECT refNo , doNumber, item--, qty,uom, remarks, reason
FROM OPENXML(@hDoc, 'Root/Detail',@flagParameter)
WITH
(
refNo [nvarchar] (50),
doNumber [int],
item [int],
qty [int],
uom [nvarchar] (6),
remarks [nvarchar] (100),
reason [nvarchar] (100)
)
UNION
SELECT refNo, doNumber, One as Item--, two as two, three as three, four as
four
FROM OPENXML(@hDoc, 'Root/Header',@flagParameter)
WITH
(
refNo [nvarchar](50),
doNumber [int],
one [int],
two [int],
three [int],
four [int]
) EXEC sp_xml_removedocument @hDoc
我使用 UNION,但结果与我的预期不符,有人可以帮助我吗?我会感谢您的帮助。
【问题讨论】:
-
能否分享您正在尝试的 UNION 查询?
-
是的,当然@keyur:
-
我在我的帖子中添加了我的查询。 @keyur
-
我认为您需要加入或交叉应用而不是 UNION。请检查以下答案:stackoverflow.com/questions/8346409/…stackoverflow.com/questions/12827126/…
标签: sql sql-server xquery xquery-sql