Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Calcular saldo com mysql


Resposta curta, sim

Resposta mais longa, você pode usar uma variável para contá-la à medida que ela percorre as linhas, ou seja,
SELECT 
    `table`.`ID`,
    `table`.`In`,
    `table`.`Out`,
    @Balance := @Balance + `table`.`In` - `table`.`Out` AS `Balance`
FROM `table`, (SELECT @Balance := 0) AS variableInit
ORDER BY `table`.`ID` ASC

O , (SELECT @Balance := 0) AS variableInit garante que @Balance seja inicializado em 0 antes de você começar. Para cada linha, ele define @Balance como @Balance + In - Out e, em seguida, gera o valor calculado.

Também vale a pena certificar-se de que ORDER seja consistente, caso contrário, o Saldo variará dependendo da ordem em que as linhas são retornadas. Se você quiser ordená-lo de trás para a frente, por exemplo, poderá usar isso como uma subconsulta, pois a consulta externa lida com os valores calculados, garantindo que o saldo permaneça correto, ou seja,
SELECT
    `balanceCalculation`.`ID`,
    `balanceCalculation`.`In`,
    `balanceCalculation`.`Out`,
    `balanceCalculation`.`Balance`
FROM (
    SELECT 
        `table`.`ID`,
        `table`.`In`,
        `table`.`Out`,
        @Balance := @Balance + `table`.`In` - `table`.`Out` AS `Balance`
    FROM `table`, (SELECT @Balance := 0) AS variableInit
    ORDER BY `table`.`ID` ASC
) AS `balanceCalculation`
ORDER BY `balanceCalculation`.`ID` DESC