Olá!
Preciso resolver um script MySql onde preciso efetuar cálculos como se fosse uma conta corrente, onde cada DIA tem um saldo anterior, total de entradas, total de saída e saldo atual do dia.
Porém o próximo dia deverá ter como saldo anterior o saldo atual do dia anterior,ok?
Bom, fiz um script que praticamente funcionou, porém em uma subquery preciso passar o valor da linha da tabela que está sendo atualizada, mas isso não está sendo possível.
Gostaria de ajuda, caso alguém tenha feito algo semelhante. Abaixo o script:
update gestao_centro_financeiro_diario g1
set g1.vlsaldo_inicial = (case
when idcentrofinanceirodiario = (select *
from (select min(g2.idcentrofinanceirodiario)
from gestao_centro_financeiro_diario g2
where g2.idcentrofinanceiro = 1) as inicial)
then g1.vlsaldo_inicial
else (select *
from (select g3.saldo_atual
from gestao_centro_financeiro_diario g3
where g3.idcentrofinanceirodiario = (select *
from (select max(g4.idcentrofinanceirodiario)
from gestao_centro_financeiro_diario g4
where g4.idcentrofinanceirodiario <
g1.idcentrofinanceirodiario) as id)) as saldo) end),
g1.saldo_atual = g1.vlsaldo_inicial + g1.total_entrada - g1.total_saida
where g1.idcentrofinanceiro = 1
order by g1.data
Meu problema está justamente quando no final do script, onde tem uma cláusula WHERE: ...where g4.idcentrofinanceirodiario < g1.idcentrofinanceirodiario) as id))...
Onde a tabela g1 é a tabela que está sofrendo o UPDATE.
Alguém pode ajudar como resolver? Desta ou de outra forma.