Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 使用XML列的SQL Pivot_Sql Server 2005_Sqlxml - Fatal编程技术网

Sql server 2005 使用XML列的SQL Pivot

Sql server 2005 使用XML列的SQL Pivot,sql-server-2005,sqlxml,Sql Server 2005,Sqlxml,有没有人举过一个例子,说明pivot使用了一个包含XML列的表,特别是将XML列中的一些元素转换为pivot表中的列?我正试图构建一个,但是语法让我很痛苦;与C中的xml相比,sql中的xml非常难以使用。我怀疑这是不可能的,但检查一下也无妨:下面是一个简单的示例,其中存储了以xml存储的产品详细信息。透视图位于底部,按类别a和B显示商店和价格总和 declare @test Table ( StoreID int, ProdXml xml ) insert into @te

有没有人举过一个例子,说明pivot使用了一个包含XML列的表,特别是将XML列中的一些元素转换为pivot表中的列?我正试图构建一个,但是语法让我很痛苦;与C中的xml相比,sql中的xml非常难以使用。我怀疑这是不可能的,但检查一下也无妨:

下面是一个简单的示例,其中存储了以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

我在这件事上投了反对票,我想不出为什么。