1

XML列を含むテーブルを使用してピボットの例を持っている人はいますか?具体的には、xml列の要素の一部をピボットテーブルの列に変換しますか? 私はそれを構築しようとしていますが、構文が私を殺しています。C# の xml と比較して、SQL の xml は非常に扱いにくいものです。これは不可能だと思いますが、確認しても問題ありません:)

4

1 に答える 1

2

これは、商品の詳細がxmlに保存されているストアがある簡単な例です。ピボットは下部にあり、店舗とカテゴリAおよび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
于 2008-10-29T01:26:10.900 に答える