Eu tenho uma consulta SQL Server que obtém os dados de vendas para uma cadeia de mercado de 44 lojas, inclui 4 valores para cada loja (Vendas, CPV, GP e GP Margin) , declarei um CTE e entrei nele 44 vezes para cada loja obter os 4 valores como colunas para cada loja conforme mostrado abaixo:
Consulta: Consulta1
mas quando tento usar PIVOT
função com SQL dinâmico ele retorna vários nulos conforme mostrado abaixo:
Consulta: Consulta2
table ##tbl1
inclui o conjunto de dados que quero dinamizar:
Usei a seguinte consulta: (os três pontos representam o restante das colunas a serem dinamizadas)
select * from ##tbl1
pivot (sum(total_sales) for s in ([50001 Sales],[50002 Sales],...)) as pv_tb
pivot (sum(Margin) for m in ([50001 margin],[50002 margin],...)) as pv_tb1
pivot (sum(total_profit) for p in ([50001 profit],[50002 profit],...)) as pv_tb2
pivot (sum(total_cost) for c in ([50001 cost],[50002 cost],...)) as pv_tb3
Eu também uso SQL dinâmico para passar os nomes das colunas para dentro PIVOT()
sem ter que escrever cada uma delas individualmente, mas por uma questão de solução de problemas eu apenas mostrei como a consulta ficaria.
Não consigo usar CROSS APPLY
e UNPIVOT
com esse resultado de 132 colunas, é muito difícil manter.
Alguém pode me ajudar a encontrar uma maneira mais fácil do que isso?