Eu tentei entender exemplos não dinâmicos na web, mas eles não resultam exatamente no que estou tentando fazer, que é ter linhas específicas transformadas em colunas e colunas transformadas em linhas. Para tentar ilustrar o que quero dizer, incluí uma foto...
Eu acredito que os dados em uma determinada coluna precisam ser do mesmo tipo, então se for esse o caso, tudo bem ter todas as colunas como varchar. Os dados na tabela de origem não precisarão fazer parte de nenhuma soma, apenas exibidos como estão. Estou apenas tentando 'girar' isso para exibir os dados de forma vertical para consumo do usuário final.
Esta consulta usa tanto UNPIVOT quanto PIVOT:
Eu tenho que lançar tudo como varchar. Com base em seu modelo de dados, talvez seja necessário convertê-los em outro tipo. Uma função agregada é exigida pelo PIVOT. Como esta é uma partida de 1 para 1, ela funciona com MAX ou MIN.
Com SQL Server >= 2008 você também pode substituir UNPIVOT por Table Value Constructor e CROSS APPLY junto com PIVOT :
Sem PIVOT / UNPIVOT você pode usar esta consulta com qualquer versão (antiga) do SQL Server:
Resultado:
Dados: