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