Eu sei sobre o recurso PIVOT no SQL Server e li algumas outras perguntas e respostas aqui, mas simplesmente não consigo entendê-lo para fazer o que preciso. Estou tentando fazer alguns cálculos e tenho o seguinte:
TABLE office_settings
column office_id (bigint not null)
column setting_value (NVARCHAR(500) NOT NULL)
office_id setting_value
--------------------------------------------
4 0.2
4 0.2
4 2
4 3
5 0.2
5 0.2
5 2
5 3
Eu gostaria de converter isso usando o PIVOT (supondo que seja a ferramenta certa para o trabalho) para isso, basicamente "agrupando por" a coluna office_id, então:
office_id value_1 value_2 value_3 value_4
------------------------------------------------------
4 0.2 0.2 2 3
5 0.2 0.2 2 3
Também devo mencionar que preciso CAST os valores da coluna setting_value para DECIMAL (4,2) no processo - caso isso tenha alguma relação com o T-SQL necessário para realizá-lo.
Alguma ideia?
Tente o seguinte:
Ou sem usar
PIVOT
(gera o mesmo plano de execução):Com sql dinâmico (útil quando o número de colunas dinâmicas varia em uma janela de pesquisa):