Hola Chicos:
Hace un par de Días encontré la solución a mi problema talvez pueda servir a algún otro la cual necesite hacer una simple consulta en Firebird en la que se requiera saldos en terminos de rango de días 30, 60, 90 , 120 y más de 120.
Aquí está lo que realicé:
Basada en la condicción IFF de Firebird mostrando un valor Booland realicé en el resultado otra subconsulta ejemplo:
Código SQL
[-]
SELECT
FAC_CREDITO.ID_CLIENTE,
FAC_CREDITO.ID_FACTURA,
CAST(FAC_CREDITO.FECHAFIN_CRE AS DATE) AS FECHAFINALIZA,
IIF( DATEDIFF(DAY FROM CURRENT_DATE TO CAST(FAC_CREDITO.FECHAFIN_CRE AS DATE))
>=1 AND (FAC_CREDITO.FECHAFIN_CRE <> CURRENT_DATE ),
( SELECT IIF( COALESCE(MIN(ABONO_CREDI.MONTO_SALDONUEVO),0) = 0,
(select FAC_CREDITO.M_VENTACREDITO from FAC_CREDITO
where FAC_CREDITO.ID_CLIENTE = :ID_C AND
FAC_CREDITO.ID_FACTURA =:ID_F AND PENDIENTE = 'S' ),
COALESCE(MIN(ABONO_CREDI.MONTO_SALDONUEVO),0))
FROM ABONO_CREDI WHERE
ABONO_CREDI.ID_CLIENTE = :ID_C AND ABONO_CREDI.ID_FACTURA = :ID_F),0)
AS SALDO_CORRIENTE,
IIF( DATEDIFF(DAY FROM CURRENT_DATE TO CAST(FAC_CREDITO.FECHAFIN_CRE AS DATE))
<=-1 AND DATEDIFF(DAY FROM CURRENT_DATE TO CAST(FAC_CREDITO.FECHAFIN_CRE AS DATE))
>=-30 OR FAC_CREDITO.FECHAFIN_CRE = CURRENT_DATE,
( SELECT IIF( COALESCE(MIN(ABONO_CREDI.MONTO_SALDONUEVO),0) = 0,
(select FAC_CREDITO.M_VENTACREDITO from FAC_CREDITO
where FAC_CREDITO.ID_CLIENTE = :ID_C AND
FAC_CREDITO.ID_FACTURA =:ID_F AND PENDIENTE = 'S' ),
COALESCE(MIN(ABONO_CREDI.MONTO_SALDONUEVO),0))
FROM ABONO_CREDI WHERE
ABONO_CREDI.ID_CLIENTE = :ID_C AND ABONO_CREDI.ID_FACTURA = :ID_F),0)
AS VENCIDOS30,
IIF( DATEDIFF(DAY FROM CURRENT_DATE TO CAST(FAC_CREDITO.FECHAFIN_CRE AS DATE))
<=-31 AND DATEDIFF(DAY FROM CURRENT_DATE TO CAST(FAC_CREDITO.FECHAFIN_CRE AS DATE))
>=-60, ( SELECT IIF( COALESCE(MIN(ABONO_CREDI.MONTO_SALDONUEVO),0) = 0,
(select FAC_CREDITO.M_VENTACREDITO from FAC_CREDITO
where FAC_CREDITO.ID_CLIENTE = :ID_C AND
FAC_CREDITO.ID_FACTURA =:ID_F AND PENDIENTE = 'S' ),
COALESCE(MIN(ABONO_CREDI.MONTO_SALDONUEVO),0))
FROM ABONO_CREDI WHERE
ABONO_CREDI.ID_CLIENTE = :ID_C AND ABONO_CREDI.ID_FACTURA = :ID_F),0) AS VENCIDOS60,
IIF( DATEDIFF(DAY FROM CURRENT_DATE TO CAST(FAC_CREDITO.FECHAFIN_CRE AS DATE))
<=-61 AND DATEDIFF(DAY FROM CURRENT_DATE TO CAST(FAC_CREDITO.FECHAFIN_CRE AS DATE))
>=-90, ( SELECT IIF( COALESCE(MIN(ABONO_CREDI.MONTO_SALDONUEVO),0) = 0,
(select FAC_CREDITO.M_VENTACREDITO from FAC_CREDITO
where FAC_CREDITO.ID_CLIENTE = :ID_C AND
FAC_CREDITO.ID_FACTURA =:ID_F AND PENDIENTE = 'S' ),
COALESCE(MIN(ABONO_CREDI.MONTO_SALDONUEVO),0))
FROM ABONO_CREDI WHERE
ABONO_CREDI.ID_CLIENTE = :ID_C AND ABONO_CREDI.ID_FACTURA = :ID_F),0) AS VENCIDOS90,
IIF( DATEDIFF(DAY FROM CURRENT_DATE TO CAST(FAC_CREDITO.FECHAFIN_CRE AS DATE))
<=-91 AND DATEDIFF(DAY FROM CURRENT_DATE TO CAST(FAC_CREDITO.FECHAFIN_CRE AS DATE))
>=-120,( SELECT IIF( COALESCE(MIN(ABONO_CREDI.MONTO_SALDONUEVO),0) = 0,
(select FAC_CREDITO.M_VENTACREDITO from FAC_CREDITO
where FAC_CREDITO.ID_CLIENTE = :ID_C AND
FAC_CREDITO.ID_FACTURA =:ID_F AND PENDIENTE = 'S' ),
COALESCE(MIN(ABONO_CREDI.MONTO_SALDONUEVO),0))
FROM ABONO_CREDI WHERE
ABONO_CREDI.ID_CLIENTE = :ID_C AND ABONO_CREDI.ID_FACTURA = :ID_F),0) AS VENCIDOS120,
IIF( DATEDIFF(DAY FROM CURRENT_DATE TO CAST(FAC_CREDITO.FECHAFIN_CRE AS DATE))
<=-121 , ( SELECT IIF( COALESCE(MIN(ABONO_CREDI.MONTO_SALDONUEVO),0) = 0,
(select FAC_CREDITO.M_VENTACREDITO from FAC_CREDITO
where FAC_CREDITO.ID_CLIENTE = :ID_C AND
FAC_CREDITO.ID_FACTURA =:ID_F AND PENDIENTE = 'S' ),
COALESCE(MIN(ABONO_CREDI.MONTO_SALDONUEVO),0))
FROM ABONO_CREDI WHERE
ABONO_CREDI.ID_CLIENTE = :ID_C AND ABONO_CREDI.ID_FACTURA = :ID_F),0) AS VENCIDOSMAS121
FROM
FAC_CREDITO
WHERE FAC_CREDITO.PENDIENTE = 'S' AND
FAC_CREDITO.ID_CLIENTE = :IDCLIENTECREDITO AND
FAC_CREDITO.ID_FACTURA = :IDFACTURACREDITO
En fin el resultado fue el requerido por el momento. la optimizacion vendrá más adelante la cual me tomaré una par de hora para ejecutarla
tambien más adelante haré mejoras en la consulta ya que esta solamente está basada en una factura especifica con numero de factura y cliente trayendo detalles de los abonos en respectiva a esa factura lo que probablemente aya a realizar es en caso que se encuentren mas de dos facturas creditos y cada factura tiene sus respectivos movimientos y sus respectivos saldo con cada numero de factura.
Bueno hasta aquí por el momento he resuelto mi interrogante.
Saludos a Todos
novato_erick