É possível fazer a operação Unpivot, onde os nomes das colunas são feitos via select, sem usar SQL dinâmico?
Eu tentei isso, mas ele falha.
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 não é a melhor maneira de não dinamizar uma tabela, CROSS APPLY com VALUES é um método muito melhor.
Desculpe, mas acho que você não pode fugir do SQL dinâmico para este.
Este código irá desdinamizar dinamicamente uma tabela inteira.