Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Multiples consultas con Firebird. (https://www.clubdelphi.com/foros/showthread.php?t=82323)

FerJavRec 22-02-2013 22:34:43

Multiples consultas con Firebird.
 
Hola buenas tardes, estoy trabajando con Delphi 2010 y Firebird 2.5 y tengo una consulta que realizo y funciona bien. Ahora estoy medio trabado y no me doy cuenta de como puedo hacer para obtener un campo con una (suma - resta) de los valores obtenidos en la consulta.
Acá pongo un ejemplo:

Código Delphi [-]
with dm1.Consultas do
 begin
   close;
   sql.Clear;
   sql.Add('SELECT mo.coop, coo.razon_social,');
   sql.Add('(SELECT sum(importe) as total_fac FROM movimientos c1 where c1.coop = mo.coop AND fecha <= ''12/31/2012'' AND tipo = ''F''),');
   sql.Add('(SELECT sum(importe) as total_rec FROM movimientos c2 where c2.coop = mo.coop AND fecha <= ''12/31/2012'' AND tipo = ''R''),');
   sql.Add('(SELECT sum(importe) as total_ntc FROM movimientos c3 where c3.coop = mo.coop AND fecha <= ''12/31/2012'' AND tipo = ''N''),');
   sql.Add('coo.saldo_inicial FROM movimientos mo');
   sql.Add('LEFT JOIN cooperativas coo on (mo.coop = coo.coop)');
   sql.Add('WHERE mo.coop IN (SELECT coop FROM cooperativas where activa = ''si'')');
   sql.Add('GROUP BY mo.coop, coo.razon_social, coo.saldo_inicial');
   open;

 end;

El campo tendria que contener el resultado de:

resultado = ( (total_fac-(total_rec+total_ntc) )

Bueno muchas gracias por su atencion.
saludos

Casimiro Notevi 22-02-2013 23:02:38

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)

Hola, el select que has puesto devolverá los campos:
mo.coop, coo.razon_social, total_fac, total_rec, total_ntc, coo.saldo_inicial

Y esto que dices no se entiende entonces:
Cita:

Empezado por FerJavRec (Mensaje 455449)
El campo tendria que contener el resultado de:
resultado = ( (total_fac-(total_rec+total_ntc) )


FerJavRec 22-02-2013 23:11:43

Hola muchas gracias por tu bienvenida.
Mira ya lo solucione. Yo necesitaba un campo que tenga la suma/resta de los valores obtenido en las consultas.

asi lo soluccione:
Código Delphi [-]
 with dm1.Consultas do
 begin
   close;
   sql.Clear;
   sql.Add('SELECT mo.coop, coo.razon_social,');
   sql.Add('((SELECT sum(importe) as total_fac FROM movimientos c1 where c1.coop = mo.coop AND fecha <= ''12/31/2012'' AND tipo = ''F'')-');
   sql.Add('((SELECT sum(importe) as total_rec FROM movimientos c2 where c2.coop = mo.coop AND fecha <= ''12/31/2012'' AND tipo = ''R'')+');
   sql.Add('(SELECT sum(importe) as total_ntc FROM movimientos c3 where c3.coop = mo.coop AND fecha <= ''12/31/2012'' AND tipo = ''N''))) as sumatotal,');
   sql.Add('coo.saldo_inicial FROM movimientos mo');
   sql.Add('LEFT JOIN cooperativas coo on (mo.coop = coo.coop)');
   sql.Add('WHERE mo.coop IN (SELECT coop FROM cooperativas where activa = ''si'')');
   sql.Add('GROUP BY mo.coop, coo.razon_social, coo.saldo_inicial');
   open;
 end;

El campo con el resultado lo tengo en sumatotal. Perdón si no soy demasiado claro.
muchas gracias.
saludos


La franja horaria es GMT +2. Ahora son las 12:40:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi