Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Pivot przy użyciu kolumny XML

Oto prosty przykład, w którym Sklepy ze szczegółami produktu są przechowywane w xml. Na dole znajduje się oś, która pokazuje sklepy i sumę cen według kategorii A i 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Próba przechowywania zawartości XML w SQL Server 2005 kończy się niepowodzeniem (problem z kodowaniem)

  2. Generowanie sekwencji na serwerze sql

  3. Czy Poradniki mają gwarancję, że będą wyjątkowe?

  4. Jak przywrócić bazę danych z C#

  5. Jak znaleźć nazwę ograniczeń typu not-null w SQL Server