我有这个查询(效果很好):
INSERT INTO @CreditDebitAdjustmentDetail
(
InvoiceNum,
ClaimNum,
ClaimantGLNNum,
LineNum,
BuyersPartNum,
UPCNum,
VendorPartNum,
CrossReferenceNum,
CreditDebit,
Qty,
UOM,
Price,
AdjustmentReason,
Amount
)
SELECT tbl.col.value('(InvoiceNum/text())[1]', 'VARCHAR(500)') AS InvoiceNum,
tbl.col.value('(ClaimNum/text())[1]', 'VARCHAR(50)') AS ClaimNum,
tbl.col.value('(ClaimantGLNNum/text())[1]', 'VARCHAR(50)') AS ClaimantGLNNum,
tbl2.col2.value('(LineNum/text())[1]', 'VARCHAR(500)') AS LineNum,
tbl2.col2.value('(BuyersPartNum/text())[1]', 'VARCHAR(500)') AS BuyersPartNum,
tbl2.col2.value('(UPCNum/text())[1]', 'VARCHAR(500)') AS UPCNum,
tbl2.col2.value('(VendorPartNum/text())[1]', 'VARCHAR(500)') AS VendorPartNum,
tbl2.col2.value('(CrossReferenceNum/text())[1]', 'VARCHAR(500)') AS CrossReferenceNum,
tbl2.col2.value('(CreditDebit/text())[1]', 'VARCHAR(500)') AS CreditDebit,
tbl2.col2.value('(Qty/text())[1]', 'VARCHAR(500)') AS Qty,
tbl2.col2.value('(UOM/text())[1]', 'VARCHAR(500)') AS UOM,
tbl2.col2.value('(Price/text())[1]', 'VARCHAR(500)') AS Price,
tbl2.col2.value('(AdjustementReason/text())[1]', 'VARCHAR(500)') AS AdjustmentReason,
tbl2.col2.value('(Amount/text())[1]', 'VARCHAR(500)') AS Amount
FROM @XML.nodes('/CreditDebitAdjustments/CreditDebitAdjustment') AS tbl (col)
CROSS APPLY tbl.col.nodes('Items/Item') AS tbl2 (col2);
但是,对于 column LineNum
,我想插入一个递增的数字(例如 1、2、3、4),具体取决于 Items/Item 下有多少孩子而不是那里的实际值。
我将如何即时进行此增量?
我让你们困惑了吗?
编辑 -
XML 看起来像这样:
<parent>
<blah1>hello1</blah1>
<blah2>hello2</blah2>
<blah3>hello3</blah3>
</parent>
<Items>
<Item></Item>
<Item></Item>
...
</Items>