Sou novo por aqui e espero poder ajudar com o que sei... mas hoje eu estou pedindo ajuda! :wacko:
Seguinte, tenho uma query simples que me retorna duas colunas: semana e valor.
week | valor
1 | 43.4213
2 | 54.659
3 | 36.9564
4 | 23.4584
e quero transformar isso em:
1 | 2 | 3 | 4
43.4 | 54.65 | 36.9 | 23.4
uma simples pivot. Para isso faço uma subquery e tudo certo.
select sum(case when week = 1 then valor else null end),
sum(case when week = 2 then valor else null end),
sum(case when week = 3 then valor else null end),
sum(case when week = 4 then valor else null end),
from ( --QUERY PRINCIPAL--).
O problema é que esse input de semana varia. O usuário entra com o valor 1 até 53 (semanas no ano) e de acordo com o input inserido a query puxa os valores referentes a 1ª semana do ano até a selecionada. Aí vem a dúvida. Como faço para a pivot ir se adaptando de acordo com o valor inserido?
Pensei em algo do tipo:
declare @controle as integer
declare @week as integer
set @controle = 0
set @week = 5 --POR EXEMPLO
select
while @controle < @week
begin
sum(case when week = @controle + 1 then valor else null end)
set @controle = @controle + 1
continue
from ( -- QUERY PRINCIPAL -- ).
Já sei que isso não funciona por motivos simples, como a falta da virgula (ou a presença) após o sum...
Alguém tem alguma idéia de como eu poderia fazer isso?
Pergunta
MarcusRJ
Caros, boa tarde!
Sou novo por aqui e espero poder ajudar com o que sei... mas hoje eu estou pedindo ajuda! :wacko:
Seguinte, tenho uma query simples que me retorna duas colunas: semana e valor.
week | valor
1 | 43.4213
2 | 54.659
3 | 36.9564
4 | 23.4584
e quero transformar isso em:
1 | 2 | 3 | 4
43.4 | 54.65 | 36.9 | 23.4
uma simples pivot. Para isso faço uma subquery e tudo certo.
select sum(case when week = 1 then valor else null end),
sum(case when week = 2 then valor else null end),
sum(case when week = 3 then valor else null end),
sum(case when week = 4 then valor else null end),
from ( --QUERY PRINCIPAL--).
O problema é que esse input de semana varia. O usuário entra com o valor 1 até 53 (semanas no ano) e de acordo com o input inserido a query puxa os valores referentes a 1ª semana do ano até a selecionada. Aí vem a dúvida. Como faço para a pivot ir se adaptando de acordo com o valor inserido?
Pensei em algo do tipo:
declare @controle as integer
declare @week as integer
set @controle = 0
set @week = 5 --POR EXEMPLO
select
while @controle < @week
begin
sum(case when week = @controle + 1 then valor else null end)
set @controle = @controle + 1
continue
from ( -- QUERY PRINCIPAL -- ).
Já sei que isso não funciona por motivos simples, como a falta da virgula (ou a presença) após o sum...
Alguém tem alguma idéia de como eu poderia fazer isso?
Valeu galera!
Abraços!!!
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.