Unir selects com colunas diferentes
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.
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
Curtidas 0
Respostas
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
09/12/2014
Obrigado Lourival pela resposta mas, o pivot é disponível apenas no oracle 11g não é?
GOSTEI 0
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
09/12/2014
Lourival, obrigado pela ajuda.
O exemplo que você deu resolveu meu problema.
Vaeu
O exemplo que você deu resolveu meu problema.
Vaeu
GOSTEI 0