有没有人有一个使用带有 XML 列的表进行数据透视的示例 - 特别是将 xml 列中的一些元素转换为数据透视表中的列?我正在尝试构建一个,但语法正在杀死我;与 C# 中的 xml 相比,sql 中的 xml 很难使用。我怀疑这是不可能的,但检查一下不会有什么坏处:)
问问题
1851 次
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 回答