小编Dav*_*eld的帖子

在视图中使用动态数据透视表SQL

Gday All,

我已经编写了一些代码来动态地像SQL Server一样转动表:将行转换为列

代码看起来像这样

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)
Run Code Online (Sandbox Code Playgroud)

这完美的作品,但我想在视图中使用它,我已经试过复制代码到一个视图和它的作品,但不会保存为它不喜欢在视图中Declare语句,我知道了在工作存储过程但不能在视图中使用存储过程,我认为我需要将它作为表值函数但不能在TBF中使用Execute语句.我需要将这些数据与视图中的另一个表相结合,并希望保持动态,所以任何想法都会非常感激:)我们正在使用SQL 2008 R2

sql-server pivot view sql-server-2008

7
推荐指数
2
解决办法
9112
查看次数

标签 统计

pivot ×1

sql-server ×1

sql-server-2008 ×1

view ×1