Microsoft SQL Serverを使用しています。複数のサブ要素を含むSQLクエリ階層型XML
私はXMLで有向グラフのような単純な階層構造を持っている:
SOURCE_NODE_ID | DEST_NODE_ID
1 | 2
1 | 3
1 | 4
2 | 1
2 | 3
このようなクエリ:
DECLARE @XML as XML = CAST(
'<ROOT>
<NODE NODE_ID="1">
<EDGE>2</EDGE>
<EDGE>3</EDGE>
<EDGE>4</EDGE>
</NODE>
<NODE NODE_ID="2">
<EDGE>1</EDGE>
<EDGE>3</EDGE>
</NODE>
</ROOT>' AS XML);
私の所望の出力は、このような表になります
SELECT B.value('data(@NODE_ID)','int') AS SOURCE_NODE_ID,
A.B.value('(EDGE/text())[1]', 'int') AS DEST_NODE_ID
FROM @XML.nodes('/ROOT/NODE') AS A(B);
返品のみ最初のエッジ:
SOURCE_NODE_ID | DEST_NODE_ID
1 | 2
2 | 1
この1つは少し良くない:
SOURCE_NODE_ID | DEST_NODE_ID
1 | 234
2 | 13
どのように取得することができます。
SELECT B.value('data(@NODE_ID)','int') AS SOURCE_NODE_ID,
B.query('EDGE').value('.', 'int') AS DEST_NODE_ID
FROM @XML.nodes('/ROOT/NODE') AS A(B);
だけそれが一つのセルにすべてのエッジを連結します私の望む結果?内側のクエリなどと結合する必要がありますか?おそらく私はそれを複雑にしています、確かにこれには簡単な解決策がありますか?
これは良い質問です:Copy'n'pasteableテストコード、自身の努力、予想される出力、明確な説明..すべての質問だけがこのようなものだった場合:-)それを投票しました! – Shnugo