Mysql
 sql >> Database >  >> RDS >> Mysql

Calcola il saldo con mysql

Risposta breve, sì

Risposta più lunga, puoi usare una variabile per calcolarla mentre scorre lungo le righe, ad es.

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

Il , (SELECT @Balance := 0) AS variableInit assicura che @Balance sia inizializzato su 0 prima di iniziare. Per ogni riga, quindi, imposta @Balance come @Balance + In - Out , quindi restituisce il valore calcolato.

Inoltre, vale la pena accertarsi che l'ORDINE sia coerente, altrimenti il ​​saldo varierà a seconda dell'ordine in cui vengono restituite le righe. Se si desidera quindi riordinarlo in primo piano, ad esempio, è possibile utilizzarlo come sottoquery poiché la query esterna si occupa dei valori calcolati garantendo così che il saldo rimanga corretto, ad esempio

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