Fluxo de caixa

Como validar os saldos dos caixas?

FLCX.FAQ-80211
O SQL abaixo irá retornar saldos diários inconsistentes com os lançamentos:
select * 
from (

    select caixa_id, data, sum(lanc) as lanc, sum(saldo) as saldo
    from (
    
        select caixa_id
        , data
        , 0 as lanc
        , total_creditos - total_debitos as saldo
        from saldos_diarios_caixas
        
        union all
        
        select caixa_id
        , data_realizada
        , valor_realizado lanc
        , 0 as saldo
        from lancamentos
   
    ) q
    group by caixa_id, data

) q

where abs(lanc - saldo) > 0.005

O SQL abaixo irá retornar caixas com saldos inconsistentes com os lançamentos:
select * 
from ( 

    select caixa_id
    , sum(saldo_lanc) as saldo_lanc
    , sum(saldo_caixa) as saldo_caixa
    from (
    
        select caixa_id
        , valor_realizado as saldo_lanc
        , 0 as saldo_caixa
        from lancamentos
        
        union all
        
        select id
        , 0 as saldo_lanc
        , saldo as saldo_caixa
        from caixas c
    
    ) q
    group by caixa_id
) q
where abs(saldo_lanc - saldo_caixa) > 0.005

O SQL abaixo, irá verificar se existem registros de saldos diários cujo saldo esteja incorreto:
select *

from (
    select *
    , sum(total_creditos - total_debitos) over (partition by caixa_id order by data)
    from saldos_diarios_caixas
) q

where abs(q.saldo-q.sum) > 0.005