2017-05-31 70 views
0

我不是XML查询的专家......但我只需要一小步就可以达到我的目标。嵌套子标记结果集xml T-SQL

使用下面的查询。

我在EANs标签中遇到了子标签EAN的问题。

SELECT 
    ExternalId, 
    [Name], 
    [Description], 
    BrandExternalId, 
    CategoryExternalId, 
    ProductPageUrl, 
    ImageUrl,  
    (SELECT ManufacturerPartNumber 
    FOR XML PATH('ManufacturerPartNumbers'), TYPE), 
    (SELECT b.EAN_Single as EAN 
    FROM #SP b 
    WHERE (ff.ExternalId = b.codart) 
    FOR XML PATH('EANs'), TYPE) 
FROM 
    Cestino.acap.Bazaar_Servizio_00 ff with (nolock) 
WHERE 
    [ExternalId] IN (100001023) 
FOR XML PATH ('Product'), ROOT('Products'); 

我得到这样的结果:

<Products> 
    <Product> 
     <ExternalId>100001023</ExternalId> 
     <Name>Carta Lucida Adesiva Photo Stickers PS-101</Name> 
     <Description>Carta lucida Photo Stickers.</Description> 
     <BrandExternalId>CANON</BrandExternalId> 
     <CategoryExternalId>10132</CategoryExternalId> 
     <ManufacturerPartNumbers> 
      <ManufacturerPartNumber>0001C001</ManufacturerPartNumber> 
     </ManufacturerPartNumbers> 
     <EANs> 
      <EAN>0138030471030</EAN> 
     </EANs> 
     <EANs> 
      <EAN>5051749491517</EAN> 
     </EANs> 
    </Product> 
</Products> 

,但我需要的结果是这样的:

<EANs> 
    <EAN>0138030471030</EAN> 
    <EAN>5051749491517</EAN> 
</EANs> 

有人可以帮助我?

感谢阿伦,意大利

回答

1

尝试以此为子查询。

(SELECT b.EAN_Single as EAN 
    FROM #SP b 
    WHERE (ff.ExternalId = b.codart) 
    FOR XML PATH(''), ROOT('EANS'), TYPE) 
+0

非常感谢!完善! ALEN – ACaps