2
はnodes(ChildTag1) OUTER APPLY nodes(ChildTag2)
が間違っクロス入社出力を生成し使用して、私の現在のクエリとしてOUTER APPLY nodes(ChildTag1 OR ChildTag2)
を照会することは可能ですT SQLでは、XMLタグの内容をどのように照会してアンピボットすることができますか?</p> <p>現在のクエリ:
;WITH CTE AS
(SELECT 'Sample Text 1' AS ID,
CONVERT(XML, '<Root>
<ParentTag ParentTagID="Sample Text 2">
<ChildTag1>5</ChildTag1>
<ChildTag1>6</ChildTag1>
<ChildTag2>7</ChildTag2>
<ChildTag2>8</ChildTag2>
</ParentTag>
</Root>'
) AS SampleXML
)
SELECT ID,
Root.ParentTag.value('@ParentTagID','NVARCHAR(MAX)') AS ParentTagID,
RootParentTag1.ChildTag1.value('(text())[1]', 'NVARCHAR(MAX)') AS ChildTag1,
RootParentTag2.ChildTag2.value('(text())[1]', 'NVARCHAR(MAX)') AS ChildTag2
FROM CTE
OUTER APPLY CTE.SampleXML.nodes('/Root/ParentTag') as Root(ParentTag)
OUTER APPLY Root.ParentTag.nodes('ChildTag1') as RootParentTag1(ChildTag1)
OUTER APPLY Root.ParentTag.nodes('ChildTag2') as RootParentTag2(ChildTag2)
電流出力:
ChildTag1 ChildTag2
5 7
5 8
6 7
6 8
このリワーククエリXMLを照会するユニオンと2つの別々のセクションを使用すると、正しい出力が得られますが、これが最も効率的な方法ですか、より簡単でクリーンな方法ですか?
作り直し問合せ:
;WITH CTE AS
(SELECT 'Sample Text 1' AS ID,
CONVERT(XML, '<Root>
<ParentTag ParentTagID="Sample Text 2">
<ChildTag1>5</ChildTag1>
<ChildTag1>6</ChildTag1>
<ChildTag1>7</ChildTag1>
<ChildTag2>8</ChildTag2>
<ChildTag2>9</ChildTag2>
<ChildTag2>10</ChildTag2>
</ParentTag>
</Root>'
) AS SampleXML
)
SELECT ID,
Root.ParentTag.value('@ParentTagID','NVARCHAR(MAX)') AS ParentTagID,
RootParentTag1.ChildTag1.value('(text())[1]', 'NVARCHAR(MAX)') AS ChildTag1,
NULL
FROM CTE
OUTER APPLY CTE.SampleXML.nodes('/Root/ParentTag') as Root(ParentTag)
OUTER APPLY Root.ParentTag.nodes('ChildTag1') as RootParentTag1(ChildTag1)
UNION
SELECT ID,
Root.ParentTag.value('@ParentTagID','NVARCHAR(MAX)') AS ParentTagID,
NULL,
RootParentTag2.ChildTag2.value('(text())[1]', 'NVARCHAR(MAX)') AS ChildTag2
FROM CTE
OUTER APPLY CTE.SampleXML.nodes('/Root/ParentTag') as Root(ParentTag)
OUTER APPLY Root.ParentTag.nodes('ChildTag2') as RootParentTag2(ChildTag2)
作り直し出力:
ChildTag1 ChildTag2
5 NULL
6 NULL
NULL 7
NULL 8
質問に含めてください。 –
こんにちは@TT。私は現在のクエリを追加しました –