我是sql server pivot的新手。我有一个输入表,数据如下所示。它有三个金额列的模型数据。根据提供的日期,这些金额适用于这些车型。
我试图以动态的方式生成一个如下所示的报告,其中每个模型的报告中应显示不同数量的日期和三个金额。
我尝试了下面这样的动态sql。
SELECT @pivotcols = STUFF((
SELECT ',' + QUOTENAME(DATE)
FROM #table
GROUP BY Date
ORDER BY Date
FOR XML PATH('')
,TYPE
).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
SET @query = N'SELECT Model,' + @pivotcols + N' from
(
SELECT Model
,Amount1
,Amount2
,Amount3
,[DATE] AS DATE1
,[DATE] AS DATE2
,[DATE] AS DATE3
FROM #table
) x
pivot
(
max(amount1)
for Date1 in (' + @pivotcols + N')
) r
pivot
(
max(amount2)
for Date2 in (' + @pivotcols + N')
) p
pivot
(
max(amount3)
for Date3 in (' + @pivotcols + N')
) o '
EXEC sp_executesql @query;
当我尝试这个查询时,我得到了以下错误。
pivot运算符中指定的列名“2000-01-01”与pivot参数中的现有列名冲突。
请给我点提示。
1条答案
按热度按时间zvokhttg1#
最后我使用下面的查询得到了结果