sql >> Databasteknik >  >> RDS >> Sqlserver

CROSS APPLY till namnutrymme, subnoder returnerar dubbletter av poster

Prova detta:

;WITH XMLNAMESPACES ('http://3ecompany.com/webservices/catalogitemxml' as CI)
SELECT 
    Identifier = CI.value('(CI:ProductIdentifiers[1]/CI:Identifier)[1]', 'varchar(9)'),
    CAS_Number = Ingred.value('(CI:Cas)[1]', 'varchar(20)'),
    Chemical_Name = Ingred.value('(CI:ChemicalName)[1]', 'varchar(100)')
FROM
    @XmlTable
CROSS APPLY
    XMLData.nodes('/ArrayOfCatalogItem/CatalogItem/CI:Msds') AS XT(CI)
CROSS APPLY
    CI.nodes('CI:Ingredients') AS XT18(Ingred)

Jag får en lista med XML-fragment för varje <Msds> nod, och från denna tar jag tag i ProductIdentifiers info. Dessutom får jag från den här noden en lista över under-XML-fragment för <Ingredients> noder och ta detaljerad information från dessa.

Min utdata ser ut så här:




  1. SQL-fråga- Uppdatera om det finns, infoga något annat

  2. Skicka data till databasen när du klickar på en länk utan att sidan uppdateras

  3. MySQL lagrade procedurvariabler från SELECT-satser

  4. Hur man korrekt gör upsert i postgres 9.5