Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

КРЪСТОСНО ПРИЛАГАНЕ към пространство от имена, подвъзлите връщат дублирани записи

Опитайте това:

;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)

Получавам списък с XML фрагменти за всеки <Msds> възел и от това вземам ProductIdentifiers инфо. Освен това от този възел получавам и списък с под-XML-фрагменти за <Ingredients> възли и вземете подробности от тях.

Изходът ми изглежда така:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008 Пълнотекстово търсене – БАВНО

  2. Преименувах колоната си, за да включва име на таблица. Защо вече не мога да го преименувам?

  3. Инсталиране на примери на база данни AdventureWorks в Microsoft SQL Server 2012

  4. Премахнете всички разширени свойства на SQL Server

  5. SQL Server 2017:Налични функции в Linux