SQL PIVOT语法错误

时间:2016-04-09 01:24:03

标签: sql sql-server pivot

尝试在其中创建包含PIVOT的视图,无法弄清楚语法。源视图有三列:ClientNameID,Item和CountOfItem。我希望ClientNameID为行,Item为列,CountOfItem为值。

This the view I tried

2 个答案:

答案 0 :(得分:0)

我明白了:

SELECT        clientnameid
FROM            dbo.vAggregateSalesByCustomerAndItem
pivot (
    Sum(countOfItem) FOR Item in ([Ring])
) PivotTable

问题是语法 BUT 我还了解到维度(列)必须在DML中进行硬编码。我想从一个表中动态获取维度,这个表可以在Excel中使用列范围,但不是在这里。

答案 1 :(得分:0)

我想你应该试试这个。它为你工作..

DECLARE @cols AS NVARCHAR(MAX),
        @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT DISTINCT ',' + Item 
                      from dbo.vAggregateSalesByCustomerAndItem
                      FOR XML PATH(''), TYPE
                     ).value('.', 'NVARCHAR(MAX)') 
                    ,1,1,'')

 set @query = 'SELECT clientnameid ' + @cols + ' from 
         (
            select clientnameid,countOfItem,Item 
            from dbo.vAggregateSalesByCustomerAndItem
        ) x
        pivot 
        (
            Sum(countOfItem)
            for Item in (' + @cols + ')
        ) p '

   execute(@query);