我必须使用以下script在本文中描述的SQL Server中构建动态PIVOT:
DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
--Get distinct values of the PIVOT Column
SELECT @ColumnName= ISNULL(@ColumnName + ',','')
+ QUOTENAME(Course)
FROM (SELECT DISTINCT Course FROM #CourseSales) AS Courses
--Prepare the PIVOT query using the dynamic
SET @DynamicPivotQuery =
N'SELECT Year, ' + @ColumnName + '
FROM #CourseSales
PIVOT(SUM(Earning)
FOR Course IN (' + @ColumnName + ')) AS PVTTable'
--Execute the Dynamic Pivot Query
EXEC sp_executesql @DynamicPivotQuery
效果很好,它会按预期返回动态表。
但是,我希望能够在其他查询中选择它,但找不到合适的方法:
保存此动态数据透视查询并在之后能够选择它的最佳解决方案是什么?
谢谢
西尔
答案 0 :(得分:0)
您可以尝试使用存储过程,并在该sp中使用动态数据透视查询中的SELECT INTO
并存储在临时表(#myDynamicPivot
)中。
然后,您可以在下一个选择语句中使用临时表。确保在使用后放下桌子。
修改强>
我会考虑将创建数据透视表的数据移动到数据仓库并在其上创建分析数据库。通过这种方式,您可以使用维度进行查询,数据将更快,并且将更加优化存储和查询。
答案 1 :(得分:0)
喔。你可以使用临时表,我的朋友。首先,检查临时表的存在。请记住在查询结束时删除它。