El Balance yo lo veo como una variable:
en sql server no sé, en Firebird sería algo así:
Código SQL
[-]
create procedure Miomio
returns (
fecha1 timestamp,
entrada1 integer,
salida1 integer,
balance integer)
as
begin
balance = 0;
for select fecha, entrada, salida
from tabla
order by fecha
into :fecha1, :entrada1, :salida1 do
begin
if entrada1 is null then
entrada1 = 0;
if salida1 is null then
salida1 = 0;
balance = balance + entrada1 - salida1; // uno de los dos es cero
suspend; // devolvemos entrada1, salida1 y balance
end;
Le he cambiado el nombre añadiendo un "1" para que se entienda, pero no habría inconveniente en quitar ese "1"
ya en delphi se usaría ese procedure como un query:
Saludos