0
例子:XQuery的父母和孩子
DECLARE @XML XML = '
<Items>
<document id="doc1" value="100">
<details>
<detail detailID="1" detailValue="20"/>
<detail detailID="2" detailValue="80"/>
</details>
</document>
<document id="doc2" value="0">
<details>
</details>
</document>
</Items>
'
我想要的結果是這樣的:
id value detailID detailValue
doc1 100 1 20
doc1 100 2 80
doc2 0 NULL NULL
嘗試:
SELECT document.value('../../@docID', 'VARCHAR(10)') AS 'docID',
document.value('../../@value', 'INT') AS 'value',
document.value('@detailID', 'VARCHAR(10)') AS 'detailID',
document.value('@detailValue', 'INT') AS 'detailValue'
FROM @XML.nodes('Items/document/details/detail') AS Documents(document)
但是,DOC2未上市...此外,試圖與CROSS JOIN和INNER JOIN,但性能非常糟糕。
這樣可行!但表現太可怕了!感謝您的回答... – Ragys
不客氣。但是表現很糟糕?您必須在一些非常大的XML文檔(或者大量記錄)上執行此操作。祝你好運! –
不是真的(3個文檔應用程序)...問題很深...用你的方法,我將不得不做3個外部應用... 3個文檔= 6秒內的響應...... – Ragys