Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Guthaben berechnen mit mysql

Kurze Antwort, ja

Längere Antwort, Sie können eine Variable verwenden, um sie zu zählen, während sie die Zeilen nach unten durchläuft, dh

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

Der , (SELECT @Balance := 0) AS variableInit stellt sicher, dass @Balance auf 0 initialisiert wird, bevor Sie beginnen. Für jede Zeile wird dann @Balance auf @Balance + In - Out gesetzt , und gibt dann den berechneten Wert aus.

Es lohnt sich auch sicherzustellen, dass die ORDER konsistent ist, da sonst der Saldo je nach Reihenfolge der zurückgegebenen Zeilen variiert. Wenn Sie es dann beispielsweise von hinten nach vorne ordnen möchten, können Sie dies als Unterabfrage verwenden, da sich die äußere Abfrage dann mit den berechneten Werten befasst und so sicherstellt, dass der Saldo korrekt bleibt, d. H.

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