Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Querendo_ser_Nerd

PIVOT no select

Recommended Posts

Olá Boa tarde,

 

Preciso alterar as colunas a seguir para vertical pelo que pesquisei seria o pivot mais não estou sabendo utilizar poderia ajudar segue.

 

select decode(grouping(to_char(trunc(data,'MM'),'YYYYMMDD')),1,'*TOTAL*', min(to_char(trunc(data,'MM'),'MON/YYYY','NLS_DATE_LANGUAGE = PORTUGUESE'))) as coluna1,

sum ((

(case when 'n' in ('s','v') then

valor

else valoritem end) - (valordoitem))) as coluna 2

 

..........

 

no final estou usando.

 

rollup (to_char(trunc(data,'MM'),'YYYYMMDD'))

 

Muito obrigado.

 

Abraços

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

N]ao sei se entendi mas tente fazer o pivot sobre o select como tabela virtual

select 
from
(
select ....
group by rollup (....)
)
pivot 
(
   ....
)
order by ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja este exemplo , o PIVOT tem de ter as colunas definidas.

 

Como no exemplo dos estados terá de passar as referências para formar as colunas e o totalizador.

 

 

outra saída e usar um case, algo como

select sum(case when to_char(data_venda,'yyyymm') = '201501' then valor_venda else 0 end) ref201501,
       sum(case when to_char(data_venda,'yyyymm') = '201502' then valor_venda else 0 end) ref201502,
       ...
       sum(case when to_char(data_venda,'yyyymm') = '201512' then valor_venda else 0 end) ref201512,
       sum(valor_venda) tot
from vendas
where ..

Prefiro esta , até para montar o sql de forma dinamica

.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.