Bueno, se puede, pero es complicado...
Primero calculas el saldo inicial con el SQL que te he enviado anteriormente.
Luego ejecutas esto pasándole los parámetros (los que tienen ":" delante)
Código SQL
[-]
select c.asiento,d.linea,c.fecha,d.debe,d.haber,
(
select :saldo_inicial + sum(dd.debe)-sum(dd.haber)
from conta_asientos cc
join conta_asientos_deta dd
on cc.asiento=dd.asiento
where
dd.cuenta = :cuenta_pedida and
cc.fecha >= :fecha_desde and
(
(cc.fecha < c.fecha) or
(cc.fecha = c.fecha) and ( (cc.asiento < c.asiento) or
( (cc.asiento = c.asiento) and (dd.linea < d.linea ) ) )
)
)
from conta_asientos c
join conta_asientos_deta d
on c.asiento=d.asiento
where
d.cuenta = :cuenta_pedida and
c.fecha >= :fecha_desde and
c.fecha <= :fecha_hasta
order by c.fecha,c.asiento,d.linea
Ten en cuenta que es un select dentro de un select, por lo que según la cantidad de registros y los índices que tengas, puede tardar bastante.
Deberás tener (creo que obligatoriamente) un índice en la cabecera (conta_asientos) por [fecha, asiento] y en el detalle conta_asientos_deta por [cuenta,asiento, linea]