我在这里发现了一些与我所面临的问题很接近的问题,但没有一个解决了我的疑问。 当我将 XML 文档解析为 SQL 结果集时,我得到了一些重复值。 看起来信息已经通过了两次,但是当我尝试仅使用一个外部应用时,它只带来 NULL 值。
在这里,我试图获取条形码和数量,但条形码重复更改数量总数。 看起来每个条形码都已附加到文档中的任何数量。
我已经在这个问题上困扰了很长一段时间,我真的很感激对此的任何启发。
提前谢谢您。
With cte as
(Select
Id,
Filename,
Cast(replace(cast(XMLData as nvarchar(max)), 'utf-8', 'utf-16') as xml) as XMLContent,
LoadedDateTime
From XMLFilesDESADV
Where Processed Is Null)
Select
--Id,
--Filename,
--Header.N.value ('(*:SalesOrderNumber)[1]', 'Varchar(50)') as SalesOrderNumber,
--Header.N.value ('(*:SalesOrderNumber)[1]', 'Varchar(50)') as SalesOrderNumber1,
--Header.N.value ('(*:CustomerReference)[1]', 'Varchar(50)') as PONumber,
--PVDetail.N.value ('(*:CustomerNumber)[1]', 'Varchar(100)') as StoreID,
--PartyVariant.N.value ('(*:Name)[1]', 'Varchar(100)') as StoreName,
LinesVariant.N.value ('(*:GlobalTradeItemNumber)[1]', 'varchar(100)') as BarCode,
LinesVariant2.N.value ('(*:Quantity)[1]', 'varchar(100)') as Quantity
From cte
--outer apply cte.XMLContent.nodes('/*:SalesDespatchAdvice_Xml_Full/*:Header') as Header(N)
--outer apply cte.XMLContent.nodes('/*:SalesDespatchAdvice_Xml_Full/*:Header/*:Parties/*:BuyerParty/*:PartyIdentificationDetail') as PVDetail(N)
--outer apply cte.XMLContent.nodes('/*:SalesDespatchAdvice_Xml_Full/*:Header/*:Parties/*:BuyerParty') as PartyVariant(N)
outer apply cte.XMLContent.nodes('/*:SalesDespatchAdvice_Xml_Full/*:Lines/*:Line/*:Item') as LinesVariant(N)
outer apply cte.XMLContent.nodes('/*:SalesDespatchAdvice_Xml_Full/*:Lines/*:Line/*:Summations') as LinesVariant2(N)
这是 XML 示例:
这是我得到的结果:
条形码 | 数量 |
---|---|
5715502955189 | 6 |
5715502955189 | 4 |
5715502955189 | 2 |
5715502955189 | 4 |
5715502955189 | 2 |
5715502955264 | 6 |
5715502955264 | 4 |
5715502955264 | 2 |
5715502955264 | 4 |
5715502955264 | 2 |
5715512355238 | 6 |
5715512355238 | 4 |
5715512355238 | 2 |
5715512355238 | 4 |
5715512355238 | 2 |
5715512355245 | 6 |
5715512355245 | 4 |
5715512355245 | 2 |
5715512355245 | 4 |
5715512355245 | 2 |
5715512355252 | 6 |
5715512355252 | 4 |
5715512355252 | 2 |
5715512355252 | 4 |
5715512355252 | 2 |
我想我发现了这个问题。 我会发布我所做的事情。
Select
LinesVariant.N.value ('(*:Item/*:GlobalTradeItemNumber)[1]', 'varchar(100)') as BarCode,
LinesVariant.N.value ('(*:Summations/*:Quantity)[1]', 'varchar(100)') as Quantity
From cte
outer apply cte.XMLContent.nodes('/*:SalesDespatchAdvice_Xml_Full/*:Lines/*:Line') as LinesVariant(N)