Câu trả lời của ypercube khá ngoạn mục (tôi chưa bao giờ thấy một sáng tạo biến trong một truy vấn duy nhất thông qua một lựa chọn giả như thế), vì vậy đây là câu lệnh CREATE TABLE để thuận tiện cho bạn.
Đối với hình ảnh dữ liệu dạng bảng trong Tìm kiếm hình ảnh của Google, bạn có thể sử dụng https://convertio.co/oc/ hoặc https: // nob.space/ để chuyển đổi nó thành tài liệu văn bản. Sau đó, nếu OCR không phát hiện đúng các cột và bạn có máy Mac, hãy sử dụng TextWrangler với phím tùy chọn được giữ để thực hiện lựa chọn hình chữ nhật và di chuyển các cột xung quanh. Sự kết hợp của trình soạn thảo SQL như Sequel Pro , TextWrangler và bảng tính như Google Docs giúp việc xử lý dữ liệu bảng được phân tách bằng tab cực kỳ hiệu quả.
Nếu tôi có thể đưa tất cả những điều này vào một bình luận thì tôi sẽ không đưa ra câu trả lời này.
-- 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)
*/