【发布时间】:2020-09-22 19:22:12
【问题描述】:
我想返回 PackageUOM 为“EA”的维度。目前,我只获取第一个子节点,这会导致问题!
我知道我只想在 PackageUOM 是 EA 时提取尺寸,但我不知道该怎么做。任何帮助,将不胜感激。谢谢。
供参考,这是在 SQL 2014 中
<Packages>
<Package MaintenanceType="A">
<PackageUOM>PL</PackageUOM>
<QuantityofEaches>50</QuantityofEaches>
<Orderable>Y</Orderable>
<Dimensions UOM="IN">
<Height>40.7500</Height>
<Width>42.0000</Width>
<Length>48.0000</Length>
</Dimensions>
</Package>
<Package MaintenanceType="A">
<PackageUOM>EA</PackageUOM>
<QuantityofEaches>1</QuantityofEaches>
<Orderable>Y</Orderable>
<Dimensions UOM="IN">
<Height>7.2500</Height>
<Width>17.0000</Width>
<Length>10.2500</Length>
</Dimensions>
<Weights UOM="PG">
<Weight>8.8400</Weight>
</Weights>
</Package>
</Packages>
SELECT *
FROM OPENXML(@handle, 'a:PIES/a:Items/a:Item',2)
WITH (
[TestFile] varchar(max) '../../a:TestFile',
[PIESVersion] varchar(max) '../../a:Header/a:PIESVersion',
[SubmissionType] varchar(max) '../../a:Header/a:SubmissionType',
[LanguageCode] varchar(max) '../../a:Header/a:LanguageCode',
[TechnicalContact] varchar(max) '../../a:Header/a:TechnicalContact',
[ContactEmail] varchar(max) '../../a:Header/a:ContactEmail',
[PCdbVersionDate] varchar(max) '../../a:Header/a:PCdbVersionDate',
[PAdbVersionDate] varchar(max) '../../a:Header/a:PAdbVersionDate',
[ItemLevelGTIN] varchar(max) 'a:ItemLevelGTIN',
[PartNumber] varchar(max) 'a:PartNumber',
[BrandAAIAID] varchar(max) 'a:BrandAAIAID',
[BrandLabel] varchar(max) 'a:BrandLabel',
[SubBrandAAIAID] varchar(max) 'a:SubBrandAAIAID',
[SubBrandLabel] varchar(max) 'a:SubBrandLabel',
[PartTerminologyID] varchar(max) 'a:PartTerminologyID',
[PackageUOM] varchar(max) 'a:Packages/a:Package/a:PackageUOM',
[PackageQuantityofEaches] varchar(max) 'a:Packages/a:Package/a:QuantityofEaches',
[PackageDimensionUOM] varchar(10) 'a:Packages/a:Package/a:Dimensions/@UOM',
[PackageHeight] decimal(9,4) 'a:Packages/a:Package/a:Dimensions/a:Height',
[PackageWidth] decimal(9,4) 'a:Packages/a:Package/a:Dimensions/a:Width',
[PackageLength] decimal(9,4) 'a:Packages/a:Package/a:Dimensions/a:Length',
[PackageWeightUOM] varchar(max) 'a:Packages/a:Package/a:Weights/@UOM',
[PackageWeight] decimal(9,4) 'a:Packages/a:Package/a:Weights/a:Weight',
[PackageUPC] varchar(max) 'a:Packages/a:Package/a:PackageLevelGTIN'
) A
WHERE A.[PartNumber]='OW7168'
【问题讨论】:
-
PSA,在提出问题时,您需要提供一个可重现的最小示例。请参考以下链接:stackoverflow.com/help/minimal-reproducible-example 请提供以下内容: (1) DDL 和样本数据填充,即 CREATE table(s) 加上 INSERT T-SQL 语句。 (2) 你需要做什么,即逻辑,你的代码尝试实现它。 (3) 基于上述#1 中的样本数据的期望输出。 (4) 你的 SQL Server 版本 (SELECT @@version;)
-
PSA,请提供我之前提到的内容。您的
SELECT语句与 XML 结构不匹配。
标签: sql-server xml tsql xquery sql-server-2014