sql >> Database teknologi >  >> RDS >> Sqlserver

Bruger attribut mere end én gang i FOR XML Path T-SQL-forespørgsel med samme elementnavn

Genvejsmetoderne klipper det muligvis ikke til dette. AUTO og PATH kan ikke lide flere elementer med samme navn. Det ser ud til, at du skal bruge FOR XML EXPLICIT kommando.

Det virker, men er besværligt.

Eksempel:

--Generate Sample Data --FOR XML EXPLICIT requires two meta fields: Tag and Parent --Tag is the ID of the current element. --Parent is the ID of the parent element, or NULL for root element. DECLARE @DataTable as table (Tag int NOT NULL , Parent int , TaxonomyValue nvarchar(max) , CategoryValue nvarchar(max) , CategoryLevel int) --Fill with sample data: Category Element (2), under Taxonomy(1), with no Taxonomy value. INSERT INTO @DataTable VALUES (2, 1, NULL, 1, 'Clothing') , (2, 1, NULL, 2, 'Jeans') --First part of query: Define the XML structure SELECT 1 as Tag --root element , NULL as Parent , NULL as [Taxonomy!1] --Assign Taxonomy Element to the first element, aka root. , NULL as [Category!2] --Assign Category Element as a child to Taxonomy. , NULL as [Category!2!Level] --Give Category an Attribute 'Level' --The actual data to fill the XML UNION SELECT Data.Tag , Data.Parent , Data.TaxonomyValue , Data.CategoryValue , Data.CategoryLevel FROM @DataTable as Data FOR XML EXPLICIT

Genererer XML

<Taxonomy>
  <Category Level="1">Clothing</Category>
  <Category Level="2">Jeans</Category>
</Taxonomy>
 

Edit:Fik vendt kolonner. Ikke mere jeans-niveau.



  1. fejl ved indsættelse i tabel med i stedet for trigger fra entity data framework

  2. Brug af en PHP-variabel før en MYSQL-forespørgsel

  3. Sådan slipper du af med MySQL-fejlen 'Forberedt erklæring skal forberedes igen'

  4. Unicode-tegn bliver til spørgsmålstegn efter indsættelse i databasen