There is a design of the form:
<purchaseDoc> <id>...</id> <purchaseNumber>...</purchaseNumber> <lots> <lot> <lotNumber>1</lotNumber> <lotObjectInfo>...</lotObjectInfo> <customerRequirements>...</customerRequirements> <purchaseObjects>...</purchaseObjects> <requirements> <requirement> <code>...</code> <name>...</name> <content>...</content> </requirement> <requirement> <code>...</code> <name>...</name> <content>...</content> </requirement> <requirement> <code>...</code> <name>...</name> <content>...</content> </requirement> </requirements> </lot> <lot> <lotNumber>2</lotNumber> <lotObjectInfo>...</lotObjectInfo> <customerRequirements>...</customerRequirements> <purchaseObjects>...</purchaseObjects> <requirements> <requirement> <code>...</code> <name>...</name> <content>...</content> </requirement> <requirement> <code>...</code> <name>...</name> <content>...</content> </requirement> <requirement> <code>...</code> <name>...</name> <content>...</content> </requirement> </requirements> </lot> </lots> </purchaseDoc> The number of nested lots, like the number of nested requirement , is not known. I understand how to get items in purchseDoc :
SELECT column.value('(purchaseDoc/id) [1]', 'integer') AS 'id' FROM table I understand how to loosen the lot element with reference to purchaseDoc :
SELECT t.column.value('(purchaseDoc/id)[1]', 'integer') AS Id, nodes.setting.value('lotNumber[1]', 'varchar(100)'), nodes.setting.value('lotObjectInfo[1]', 'varchar(100)') FROM table t CROSS APPLY t.column.nodes('purchaseDoc/lots/lot/.[1]') nodes(setting) I receive after this request a table of the form
id | lotNumber | lotObjectInfo But I don’t understand how I can do it in order to go even further to break the requirement with reference to both the lot and purchaseDoc , that is, so that I get a table of the form:
id | purchaseNumber | lotNumber | code | name | content