可以执行 Unpivot 操作,其中列名通过 select 完成,而不使用动态 SQL?
我试过了,但失败了。
SELECT *
FROM [dbo].[Report]
UNPIVOT
(
Value
FOR WeekName IN
(
SELECT COLUMN_NAME FROM information_schema.columns c
WHERE c.TABLE_NAME = 'Report'
AND ORDINAL_POSITION > 1
ORDER BY ORDINAL_POSITION
)
) u
UNPIVOT 不是反透视表的最佳方法,CROSS APPLY with VALUES 是更好的方法。
抱歉,但我认为您无法为此摆脱动态 SQL。
此代码将动态取消透视整个表。