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

SQL Pivot ved hjælp af en XML-kolonne

Her er et simpelt eksempel, der har butikker med produktdetaljer gemt i xml. Pivoten er nederst, som viser butikkerne og en sum af prisen efter kategori A og B.

declare @test Table
(

    StoreID int,
    ProdXml xml
)

insert into @test
select 1, '<product cat="A" name="foo" price="10" />' union
select 2, '<product cat="A" name="bar" price="12" />' union
select 1, '<product cat="B" name="blah" price="35" />' union    
select 2, '<product cat="B" name="bap" price="67" />' union
select 1, '<product cat="C" name="bip" price="18" />' union
select 2, '<product cat="A" name="bing" price="88" />' union
select 1, '<product cat="B" name="bang" price="34" />' union    
select 2, '<product cat="B" name="boom" price="65" />' 

--Pivot showing sum of price by Cat
select  StoreID, A, B
from
(   
    select  StoreID,
        ProdXml.value('/product[1]/@cat[1]','varchar(20)') as [ProdCat],
        ProdXml.value('/product[1]/@price[1]','int') as [ProdPrice]
    from  
        @test
) up
PIVOT (SUM([ProdPrice]) FOR [ProdCat] IN ( A, B)) as pvt
ORDER BY StoreID



  1. Understøtter AWS RDS MySQL som dokumentlager

  2. Få alle handlinger fra de sidste tre brugere

  3. Opdater en sorteringsindekskolonne for at flytte elementer

  4. Hvordan rettes forkerte strengværdifejl?