【发布时间】:2017-01-17 05:10:57
【问题描述】:
所有节日,
我已经编写了一些代码来动态透视表,例如SQL Server : Transpose rows to columns
代码如下所示
DECLARE @cols NVARCHAR(MAX), @sql NVARCHAR(MAX)
SET @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(FieldName)
FROM CORE_Items_Extra
WHERE Not(FieldName = '')
ORDER BY 1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'),1,1,'')
SET @sql = 'SELECT ItemID, ' + @cols + '
FROM
(
SELECT ItemID, FieldValue, FieldName
FROM CORE_Items_Extra
) AS SourceTable
PIVOT
(
MAX(FieldValue) FOR FieldName IN (' + @cols + ')
) AS PivotTable;'
EXECUTE(@sql)
效果很好但我想在视图中使用它,我尝试将代码复制到视图中,它可以工作但不会保存,因为它不喜欢视图中的 Declare 语句,我知道了在存储过程中工作但不能在视图中使用存储过程,我想我需要将它作为表值函数但不能在 TBF 中使用 Execute 语句。我需要将此数据与视图中的另一个表结合起来,并希望使其保持动态,因此任何想法都将不胜感激:) 我们使用的是 SQL 2008 R2
【问题讨论】:
标签: sql-server sql-server-2008 view pivot