Query-select

Hola amigo(s):
Mi tabla INVS tiene los siguientes registros(en breve):
id            fcha            imp
---------------------------------
ec 2007-01-28 200.00
mye 2000-10-04 125.00
mye 2000-12-31 300.00
mye 2010-04-10 170.00
trr 2007-01-10 0.00
Y necesito un query select que me de el siguiente result set:
id       sum_1    sum_2
---------------------------
ec 0.00 200.00
mye 425.00 170.00
trr          0.00       0.00
La columna 'sum_1' representa la suma del campo 'imp' para los registros con 'fcha' menor que o igual a '2000-12-31', mientras que la columna 'sum_2' la suma de los registros mayores a '2000-12-31'
He tratado mucho con joins, unions.. Estoy seguro que existe una manera correcta usando la clausula join del comando select.
Gracias y saludos..
{"Lat":21.9431749040988,"Lng":-100.546737671029}

1 Respuesta

Respuesta
1
No te hacen falta Joins, la explicación a esto es que tu tabla INVS no se relaciona sobre ella misma ni sobre otra tabla.
Necesitaría que me dijeras cual es la base de datos sobre la que trabajas para saber cual es la mejor sentencia que te pueda recomendar. De todas formas te adelanto que tendrás que usar 2 subconsultas, sería algo del estilo
SELECT i.id, s1.imp, s2.imp FROM INVS i,
(SELECT sum(i2.imp) imp FROM INVS i2 where i2.fcha <= to_date('31-12-2000') AND i.id = i2.id) s1,
(SELECT sum(i2.imp) imp FROM INVS i3 where i3.fcha > to_date('31-12-2000') AND i.id = id3.id)s2;
En éste caso hacemos la consulta usando Vistas, y las enlazamos como si fueran tablas (s1 y s2), éstas tablas serán la suma de imp para la misma id que se está recorriendo en la consulta principal, para s1 las que tienen fecha menor que 31/12 y s2 para las demás.
Eso te serviría para lanzar la consulta con oracle a partir de 9i, es posible que la base de datos que tú estés usando no soporte esa consulta. Si acaso pruébalo, intenta entenderla, pregúntame lo que no entiendas y si tu BD no soporta la consulta, buscamos otra manera.
Hola Khanser:
Primeramente para agradecerte tu atención y tiempo. Es reconfortante saber que hay alguien dispuesto a ayudar desinteresadamente, sobre todo a los novatos como yo.
En realidad el ejemplo que muestro es mucho más complicado, ya que el campo id de INVS se relaciona con la tabla maestra RUBROS, pero la expuse de una manera simple por dos razones: 1) no complicar la respuesta 2) probarme a mi mismo.
Acabo de consultar tu respuesta (perdón por el retraso) y la voy a probar. Ya anteriormente me había respondido tu colega el Sr. Melvin Davidson y me funciono muy bien (con pequeños cambios).
Las aplicaciones que desarrolle deseo hacerlas fexibles y potentes, por eso utilizo PostgreSQL/MySQL/Firebird como RDBMS. Como lenguajes estoy programando en Lazarus(pascal) y Python(con wxWidgets).
Espero tu respuesta. Saludos y nuevamente GRACIAS...!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas