Ir para o conteúdo principal

Alinhamento de Conta

DROP TABLE IF EXISTS _TEMP_conta_ajuste;

CREATE TABLE _TEMP_conta_ajuste (
	WITH e AS (
		SELECT 
			id_conta, 
			SUM(valor) AS saldo 
		FROM 
			extrato 
		WHERE 
			situacao = 'ATIVO' 
			AND id_conta IN (128, 214, 215) 
		GROUP BY id_conta
	)
	SELECT c.id, c.nome, CAST(c.saldo AS DECIMAL ( 12, 2 )) AS saldo_atual, CAST(e.saldo AS DECIMAL ( 12, 2 )) AS saldo_extrato FROM conta c INNER JOIN e ON (e.id_conta = c.id) HAVING saldo_atual <> saldo_extrato
);

SELECT * FROM _TEMP_conta_ajuste;

UPDATE conta c INNER JOIN _TEMP_conta_ajuste t ON (t.id = c.id) SET c.saldo = t.saldo_extrato;