คำตอบของ ypercubeนั้นยอดเยี่ยมมาก (ฉันไม่เคยเห็นการสร้างตัวแปรภายในเคียวรีเดียวผ่านตัวเลือกแบบจำลอง) ดังนั้นนี่คือคำสั่ง CREATE TABLE เพื่อความสะดวกของคุณ
สำหรับรูปภาพข้อมูลแบบตารางใน Google Image Search คุณสามารถใช้https://convertio.co/ocr/หรือhttps://ocr.space/เพื่อแปลงเป็นเอกสารข้อความ จากนั้นหาก OCR ตรวจไม่พบคอลัมน์อย่างถูกต้องและคุณมี Mac ให้ใช้TextWranglerโดยใช้ปุ่มตัวเลือกค้างไว้เพื่อทำการเลือกแบบสี่เหลี่ยมผืนผ้าและย้ายคอลัมน์ไปมา การรวมกันของตัวแก้ไข SQL เช่นSequel Pro , TextWrangler และสเปรดชีตเช่นGoogle Docsทำให้การจัดการกับข้อมูลตารางที่คั่นด้วยแท็บมีประสิทธิภาพอย่างมาก
หากฉันสามารถใส่ทั้งหมดนี้ในความคิดเห็นที่ฉันต้องการได้โปรดอย่าโหวตขึ้นคำตอบนี้
-- 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)
*/