所以我有这段代码:
DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
--Get distinct values of the PIVOT Column
SELECT @ColumnName= ISNULL(@ColumnName + ',','')
+ QUOTENAME(period)
FROM (SELECT DISTINCT period FROM atbv_Accounting_OrdersDeliveries WHERE InvoiceNo IS NOT NULL) AS Periods
SET @DynamicPivotQuery =
N'SELECT ' + @ColumnName + '
FROM (SELECT
ArticleID, period, SUM(Amount) As Total
FROM atbv_Accounting_OrdersDeliveries
WHERE InvoiceNo IS NOT NULL
GROUP BY ArticleID, period
) AS T
PIVOT(SUM(TOTAL)
FOR period IN (' + @ColumnName + ')) AS PVTTable'
--Execute the Dynamic Pivot Query
EXEC sp_executesql @DynamicPivotQuery
我保存了一个存储过程,因为我无法在视图中声明变量。有没有办法在视图中调用此过程?请注意,列量也是动态的:)
谢谢!
答案 0 :(得分:0)
尝试使用存储过程而不是视图。
如果由于任何原因无法做到这一点,您可以使用存储过程和客户端创建一个定期填充表的SQL Server代理作业,而不是使用“缓存”数据。
答案 1 :(得分:0)
您无法拥有动态视图,重点是什么?
如果您想知道如何从存储过程共享数据,那么
是一篇很棒的文章。如果您想了解动态SQL,那么我建议
由同一作者Erland Sommarskog撰写。对于Stack Overflow上的简单答案,这两个主题都过于宽泛。