Mysql
 sql >> Base de données >  >> RDS >> Mysql

Calculer le solde avec mysql

Réponse courte, oui

Réponse plus longue, vous pouvez utiliser une variable pour l'additionner au fur et à mesure qu'elle parcourt les lignes, c'est-à-dire

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

Le , (SELECT @Balance := 0) AS variableInit garantit que @Balance est initialisé à 0 avant de commencer. Pour chaque ligne, il définit ensuite @Balance sur @Balance + In - Out , puis affiche la valeur calculée.

Il convient également de s'assurer que ORDER est cohérent, sinon le solde variera en fonction de l'ordre dans lequel les lignes sont renvoyées. Si vous vouliez ensuite l'ordonner à l'envers, par exemple, vous pouvez l'utiliser comme sous-requête, car la requête externe traite les valeurs calculées, garantissant ainsi que le solde reste correct, c'est-à-dire

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