Unir selects com colunas diferentes

Oracle

09/12/2014

Boa tarde galera.

Minha dúvida é o seguinte, existe alguma forma de fazer um union de selects porem com colunas diferentes? Por ex tenho uma tabela GUIA e gostaria de saber as origens dessas guias porém essa distinção eu não consigo fazer apenas por um campo tem os filtros que trás cada informação..vou ser mais claro:


select nome, count(cod_web) from guia -> Essas guias tem origem WEB
group by nome

select nome, count(cod_guia) from guia -> Essas guias tem origem no portal
where portal is not null
group by nome

select nome, count(cod_guia) from guia -> Essas guias tem origem no desktop
where portal is null
and cod_web is null

Gostaria de fazer um union ou outa forma que apareça:

nome-web-portal-desk
Maria-2-0-1
Jose-0-1-3

Entenderam?
Utilizo Oracle 10g


Obrigado a todos.
Camilo Oliveira

Camilo Oliveira

Curtidas 0

Respostas

Lourival Queiroz

Lourival Queiroz

09/12/2014

Vc pode utilizar o union e na junção desse unions vc faz um pivot que resolve tua situação, nas soluções apresentadas nessa sala tem vários exemplos de pivot.
GOSTEI 0
Camilo Oliveira

Camilo Oliveira

09/12/2014

Obrigado Lourival pela resposta mas, o pivot é disponível apenas no oracle 11g não é?
GOSTEI 0
Lourival Queiroz

Lourival Queiroz

09/12/2014

Exemplo usando o grouping rollup

select GROUPING(g.uf)                                          UF,
          sum(case when g.tipo = 1 then 0 else 1 end)  DESK,
          sum(case when g.tipo = 2 then 1 else 0 end) web,
          sum(case when g.fisjur = 'J' and g.tipo = 1 then 1 else 0 end) SAP
from emitente g
group by rollup(g.uf)
GOSTEI 0
Camilo Oliveira

Camilo Oliveira

09/12/2014

Lourival, obrigado pela ajuda.

O exemplo que você deu resolveu meu problema.


Vaeu
GOSTEI 0
POSTAR