Sergio Daniel Gomez escribió:
Sergio Valdes Hurtado escribió:
Estimados,
Tengo una tabla con la siguiente estructura:
RBD int -- Es un identificador de
establecimientos educacionales
ano_pago int -- Año de pago
mes_pago int -- Mes de pago
monto int -- Monto pagado
tip_proc vachar(1) -- Identificador de Tipo de
Proceso y puede tener el valor "N" o "S"
En el caso de que el Tipo de Proceso sea "S", sólo los meses de Marzo
a Diciembre tienen este tipo de pago, es decir no hay pagos "S" en los
meses de Enero y Febrero.
Pues bien, me piden un informe que sume los pagos por año por tipo de
Proceso ("N" o "S") y para ello hice la siguiente consulta:
SELECT rbd, sum(monto) FROM dbo.orden_pago
where ano_pago =2009
and tip_proc = "S"
group by rbd
El problema es que ahora me dicen que para este total debo incluir los
meses de Enero y Febrero que tienen tipo de Pago "N" y sumarlo con lo
que se obtiene en la consulta anterior.
Mi pregunta es si se podrá hacer en una sola consulta?, ya que este es
una base de datos heredada y sólo tenemos accesos de lectura y no
podemos hacer funciones ni tablas temporales
Saludos cordiales a todos
--
TIP 2: puedes desuscribirte de todas las listas simultáneamente
(envía "unregister TuDirecciónDeCorreo" a [email protected])
Podría ser ?
SELECT rbd, sum(monto) FROM dbo.orden_pago
where ano_pago =2009
and (tip_proc = "S"
or (tip_proc = "N"
and (mes_pago = "Enero"
or mes_pago = "Febrero")
)
group by rbd
--
TIP 8: explain analyze es tu amigo
Ups! mes_pago es int, entonces
SELECT rbd, sum(monto) FROM dbo.orden_pago
where ano_pago =2009
and (tip_proc = "S"
or (tip_proc = "N"
and (mes_pago between 1 and 2)
)
group by rbd;
suponiendo que enero = 1, febrero = 2, etc.
--
TIP 5: ¿Has leído nuestro extenso FAQ?
http://www.postgresql.org/docs/faqs.FAQ.html