réponse de ypercube est assez spectaculaire (je n'avais jamais vu de création de variable dans une seule requête via une sélection factice comme celle-ci), voici donc l'instruction CREATE TABLE pour votre commodité.
Pour les images de données tabulaires dans Google Image Search, vous pouvez utiliser https://convertio.co/ocr/ ou https://ocr.space/ pour le convertir en document texte. Ensuite, si l'OCR n'a pas détecté correctement les colonnes et que vous avez un Mac, utilisez TextWrangler avec la touche d'option enfoncée pour effectuer une sélection rectangulaire et déplacer les colonnes. La combinaison d'un éditeur SQL comme Sequel Pro , TextWrangler et d'une feuille de calcul comme Google Docs rend le traitement des données tabulaires séparées par des tabulations extrêmement efficace.
Si je pouvais mettre tout cela dans un commentaire, je le ferais, alors ne votez pas cette réponse.
-- DROP TABLE statements;
CREATE TABLE IF NOT EXISTS statements (
id integer NOT NULL AUTO_INCREMENT,
stmnt_date date,
debit integer not null default 0,
credit integer not null default 0,
PRIMARY KEY (id)
);
INSERT INTO statements
(stmnt_date , debit, credit) VALUES
('2014-06-17', 20000, 0 ),
('2014-08-14', 0 , 3000 ),
('2014-07-16', 0 , 3000 ),
('2015-02-01', 3000 , 0 ),
('2014-05-15', 3000 , 0 );
-- this is slightly modified from ypercube's (@b := 0 vs @b := 0.0)
SELECT
s.stmnt_date, s.debit, s.credit,
@b := @b + s.debit - s.credit AS balance
FROM
(SELECT @b := 0) AS dummy
CROSS JOIN
statements AS s
ORDER BY
stmnt_date ASC;
/* result
+------------+-------+--------+---------+
| stmnt_date | debit | credit | balance |
+------------+-------+--------+---------+
| 2014-05-15 | 3000 | 0 | 3000 |
| 2014-06-17 | 20000 | 0 | 23000 |
| 2014-07-16 | 0 | 3000 | 20000 |
| 2014-08-14 | 0 | 3000 | 17000 |
| 2015-02-01 | 3000 | 0 | 20000 |
+------------+-------+--------+---------+
5 rows in set (0.00 sec)
*/