select
    a.*,
    'update tbestoque_saldo_diario set saldo = '||SALDO_CORRETO||' where LOCALIZACAO_CODIGO = '||LOCALIZACAO_CODIGO||' and PRODUTO_CODIGO = '||PRODUTO_CODIGO||' and estabelecimento_codigo = '||estabelecimento_codigo||' and data = ''22.04.2021'';' as sql1,
    'update tbestoque_saldo set saldo = '||SALDO_CORRETO||' where LOCALIZACAO_CODIGO = '||LOCALIZACAO_CODIGO||' and PRODUTO_CODIGO = '||PRODUTO_CODIGO||' and estabelecimento_codigo = '||estabelecimento_codigo||';' as sql2
from(
    select
        estabelecimento_codigo,
        LOCALIZACAO_CODIGO,
        PRODUTO_CODIGO,
        SALDO,
        QTD,
        HOJE,
        (SALDO + QTD) as SALDO_CORRETO,
        iif((SALDO + QTD) = HOJE,1,0) as STATUS,
        ((SALDO + QTD) - HOJE) DIF
    
    from(
        select
            d.estabelecimento_codigo,
            d.localizacao_codigo,
            d.produto_codigo, d.saldo,
        
            coalesce((select sum(i.quantidade * iif(i.tipo = 'S',-1,1)) from tbestoque_transacao_item i where
            i.localizacao_codigo = d.localizacao_codigo
            and i.estabelecimento_codigo = d.estabelecimento_codigo
            and i.produto_codigo = d.produto_codigo
            and i.data > '20.04.2021'
             and i.tipo in ('E', 'S')),0) as QTD,
        
            coalesce((select
                            dd.saldo
                        from tbestoque_saldo dd
                        where dd.produto_codigo = d.produto_codigo
                        and dd.localizacao_codigo = d.localizacao_codigo
                        and dd.estabelecimento_codigo = d.estabelecimento_codigo
                        ), 0) as HOJE
        
        from (

            select
                i.estabelecimento_codigo,
                i.produto_codigo as produto_codigo,
                i.localizacao_codigo as localizacao_codigo,
                coalesce((
                    select first 1
                        d.saldo
                    from tbestoque_saldo_diario d
                    where d.data <= '20.04.2021' and d.localizacao_codigo = i.localizacao_codigo and d.produto_codigo = i.produto_codigo and d.estabelecimento_codigo = i.estabelecimento_codigo  order by d.data descending),0) saldo

            from (select distinct i.produto_codigo, i.localizacao_codigo, i.estabelecimento_codigo from tbestoque_transacao_item i where i.data > '20.04.2021' and i.tipo in ('E', 'S')) i

        ) d



    )
) a  where STATUS = 0