Frage

Hat jemand ein Beispiel für einen Dreh hat eine Tabelle mit einer XML-Spalte in es mit - speziell einige der Elemente in der XML-Spalte in eine Spalte in der Pivot-Tabelle drehen? Ich versuche, einen zu bauen, aber die Syntax bringt mich; xml in SQL ist verdammt schwer, mit zu arbeiten, im Vergleich zu XML in C #. Ich vermute, das ist unmöglich, aber es wäre nicht zu überprüfen verletzt:)

War es hilfreich?

Lösung

Hier ist ein einfaches Beispiel, das Geschäft mit Produktinformation gespeichert in xml hat. Der Drehpunkt befindet sich an der Unterseite, die die Geschäfte und eine Summe des Preises durch den Kategorien A und B zeigt.

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top