jawaban ypercube sangat spektakuler (saya belum pernah melihat kreasi variabel dalam satu permintaan melalui pilihan boneka seperti itu), jadi inilah pernyataan CREATE TABLE untuk kenyamanan Anda.
Untuk gambar data tabular dalam Google Image Search, Anda dapat menggunakan https://convertio.co/ocr/ atau https://ocr.space/ untuk mengubahnya menjadi dokumen teks. Kemudian jika OCR tidak mendeteksi kolom dengan benar, dan Anda memiliki Mac, gunakan TextWrangler dengan tombol pilihan ditekan untuk melakukan pemilihan persegi panjang dan memindahkan kolom di sekitar. Kombinasi dari SQL editor seperti Sequel Pro , TextWrangler dan spreadsheet seperti Google Docs membuat berurusan dengan data tabular yang dipisahkan dengan tab menjadi sangat efisien.
Jika saya bisa memasukkan semua ini ke dalam komentar yang saya mau, jadi tolong jangan mundur jawaban ini.
-- 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)
*/