尝试在其中创建包含PIVOT的视图,无法弄清楚语法。源视图有三列:ClientNameID,Item和CountOfItem。我希望ClientNameID为行,Item为列,CountOfItem为值。
答案 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);