По какой-то причине я не могу различить, когда я запускаю код, показанный ниже, вместо того, чтобы давать мне правильное значение «DE», он повторяет первое значение «00». Это происходит только в последнем столбце. Любые идеи, в которых я ошибся?Проблема с XML-SQL 2008r2
USE EDIXML
GO
DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX)
SELECT @XML = XMLData FROM XMLwithOpenXML
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML
SELECT code,type,name,DE
FROM OPENXML(@hDoc, 'TRN-862/SEG-BSS/DE')
WITH
(
code [varchar](100) '@code',
type [varchar](100) '@type',
name [varchar](100) '@name',
DE [varchar](100) '../DE'
)
EXEC sp_xml_removedocument @hDoc
GO
Ниже XML данные:
<TRN-862>
<SEG-BSS>
<SEG-INFO code="BSS" name="BEGINNING SEGMENT FOR SHIPPING SCHEDULE" />
<DE code="0353" name="TRANSACTION SET PURPOSE CODE" type="ID" desc="Original">00</DE>
<DE code="0127" name="REFERENCE IDENTIFICATION" type="AN">512</DE>
<DE code="0373" name="DATE" type="DT">20160204</DE>
<DE code="0675" name="SCHEDULE TYPE QUALIFIER" type="ID" desc="Shipment Based">SH</DE>
<DE code="0373" name="DATE" type="DT">20160204</DE>
<DE code="0373" name="DATE" type="DT">20160227</DE>
<DE code="0328" name="RELEASE NUMBER" type="AN">512</DE>
<DE code="0127" name="REFERENCE IDENTIFICATION" type="AN" />
<DE code="0367" name="CONTRACT NUMBER" type="AN" />
<DE code="0324" name="PURCHASE ORDER NUMBER" type="AN" />
<DE code="0676" name="SCHEDULE QUANTITY QUALIFIER" type="ID" desc="Actual Discrete Quantities">A</DE>
</SEG-BSS>
И, наконец, ниже, что запрос обеспечивает:
code type name DE
0353 ID TRANSACTION SET PURPOSE CODE 00
0127 AN REFERENCE IDENTIFICATION 00
0373 DT DATE 00
0675 ID SCHEDULE TYPE QUALIFIER 00
0373 DT DATE 00
0373 DT DATE 00
0328 AN RELEASE NUMBER 00
0127 AN REFERENCE IDENTIFICATION 00
0367 AN CONTRACT NUMBER 00
0324 AN PURCHASE ORDER NUMBER 00
0676 ID SCHEDULE QUANTITY QUALIFIER 00
Brilliant! Огромное спасибо! – Launenhaft