PDA

Ver la Versión Completa : Pregunta sobre SQL a los gurus...(BALANCE)


txemag
19-02-2004, 23:07:02
A ver si el oraculo me ilumina con su "sapiencia", estoy buscando una consulta los suficientemente birguera para calcular el balance de una tabla, es decir:

Si tenemos los datos:

Debe Haber Balance
- 9 9
3 - 6
1 - 5
- 2 7


La cosa es como poder sacar la columna balance mediante una consulta, y asi no tener que grabar fisicacamente el campo. He buscado por inet y veo que varias personas preguntan lo mismo, pero no hay ninguna respuesta que solucione el problema.

Animo y gracias....;)

delphi.com.ar
19-02-2004, 23:08:14
¿Qué es lo que sería Balance?... ¿Qué motor utilizas?... ¿Puedes usar un store procedure?

guillotmarc
19-02-2004, 23:45:38
Como comenta el compañero, la solución a tu problema está en utilizar un procedimento almacenado. Pero si quieres una orientación sobre como hacerlo, deberás indicar que servidor sql utilizas, puesto que cada uno tiene sus características propias.

Si en lugar de utilizar un servidor sql, utilizas una tabla plana (Access, dBase, Paradox, ...), olvídate del tema, y ve pensando en como hacerlo en el Dataset de Delphi.

Saludos.

jachguate
19-02-2004, 23:48:13
Select debe, haber, haber - debe balance
from tabla;

Hasta luego.

;)

txemag
20-02-2004, 00:24:07
Como comenta el compañero, la solución a tu problema está en utilizar un procedimento almacenado. Pero si quieres una orientación sobre como hacerlo, deberás indicar que servidor sql utilizas, puesto que cada uno tiene sus características propias.


Lo primero daros las gracias, el motor de base de datos que uso es FIREBIRD 1.5, si me podeis orientar con ese stored procedure me hariais un buen favor.

Salu2...

txemag
20-02-2004, 00:30:49
Hola.

En Firebird es muy sencillo de hacer. Simplemente debes crear un procedimiento almacenado de este estilo :


SET TERM ^ ;
CREATE PROCEDURE BALANCE
RETURNS (
DEBE NUMERIC(18,4),
HABER NUMERIC(18,4),
SALDO NUMERIC(18,4))
AS
begin
SALDO = 0;
for select DEBE, HABER
from TABLA
into :DEBE, :HABER
do begin
SALDO = SALDO + coalesce(HABER, 0) - coalesce(DEBE, 0);
suspend;
end
end
^
SET TERM ; ^


En la aplicación solo tienes que hacer una consulta del tipo :

select * from BALANCE

Saludos.

txemag
20-02-2004, 18:09:12
Muchas gracias, funciona perfectamente :D


Eres grande guillotmarc. :rolleyes:

Salu2