SQL - Alguna forma de unir estos dos selects?

   
Vista:

Alguna forma de unir estos dos selects?

Publicado por ariargento (1 intervención) el 04/11/2009 12:15:16
Buenas chicos,

Me gustaría unir estos dos selects, que como véis, cogen datos de las mismas tablas, pero cogen distintos datos (una hace con lo ofertado y la otra con lo aceptado).

El primer select:

select
m.nombre||' '||e.ejercicio mes, t.tipoobra,
count(*) num_ofertas,
sum((select (valor) from TotObra(o.obra))) total_ofertado from
ejercicio e, meses m, tipoobra t, obra o where
t.tipoobra=o.tipoobra and
m.mes=extract(month from o.fechaalta) and
e.ejercicio=extract(year from o.fechaalta) and
e.ejercicio=:EJERCICIO and (m.mes between 1 and 12) group by m.mes, m.nombre, e.ejercicio, t.tipoobra order by e.ejercicio, m.mes, t.tipoobra

Y el segundo:

select
m.nombre||' '||e.ejercicio mes, t.tipoobra,
count(*) num_aceptadas,
sum((select (valor) from TotObra(o.obra))) total_aceptado from
ejercicio e, meses m, tipoobra t, obra o where
t.tipoobra=o.tipoobra and
m.mes=extract(month from o.fechaacepta) and
e.ejercicio=extract(year from o.fechaacepta) and
e.ejercicio=:EJERCICIO and (m.mes between 1 and 12) group by m.mes, m.nombre, e.ejercicio, t.tipoobra order by e.ejercicio, m.mes, t.tipoobra

Se os ocurre alguna forma para unir los dos en una única consulta? Lo necesito para el trabajo, y me estoy volviendo loco con mis justos conocimientos de SQL...

Gracias de antemano por la ayuda! :)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de roger

RE:Alguna forma de unir estos dos selects?

Publicado por roger (93 intervenciones) el 04/11/2009 16:19:09
select
m.nombre||' '||e.ejercicio mes, t.tipoobra,
count(*) num_ofertas,
sum((select (valor) from TotObra(o.obra))) total_ofertado, 'Ofertadas' as Tipo from
ejercicio e, meses m, tipoobra t, obra o where
t.tipoobra=o.tipoobra and
m.mes=extract(month from o.fechaalta) and
e.ejercicio=extract(year from o.fechaalta) and
e.ejercicio=:EJERCICIO and (m.mes between 1 and 12) group by m.mes, m.nombre, e.ejercicio, t.tipoobra order by e.ejercicio, m.mes, t.tipoobra
UNION
select
m.nombre||' '||e.ejercicio mes, t.tipoobra,
count(*) num_aceptadas,
sum((select (valor) from TotObra(o.obra))) total_aceptado,'Aceptadas' as Tipo from
ejercicio e, meses m, tipoobra t, obra o where
t.tipoobra=o.tipoobra and
m.mes=extract(month from o.fechaacepta) and
e.ejercicio=extract(year from o.fechaacepta) and
e.ejercicio=:EJERCICIO and (m.mes between 1 and 12) group by m.mes, m.nombre, e.ejercicio, t.tipoobra order by e.ejercicio, m.mes, t.tipoobra

Espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar