Mysql
使用 Pagination MYSQL 從以前的記錄計算借方貸方餘額
我有以下架構和展示數據的表-
id date particulars debit credit 104 29-12-2020 Crediting NULL 1000 105 29-12-2020 Purchased Item:A 2000 NULL 106 29-12-2020 Purchased Item:B 200 NULL 107 29-12-2020 Purchased Item:C 1000 NULL 108 29-12-2020 Credited NULL 1200 109 29-12-2020 Credited NULL 500 110 29-12-2020 Credited NULL 2100 111 29-12-2020 Credited NULL 1300 112 01-01-2021 Purchased Item:Q 200 NULL 113 02-01-2021 Purchased Item:A 2300 NULL
我想計算從這個日期到這個日期的過濾器以及包括分頁在內的執行平衡。到目前為止,通過參考這個答案 ,我找到了滿意的結果,只是問題出在
WHERE
子句上。我用過的查詢=
SET @variable = 0; SELECT id, date, particulars, debit, credit, @variable := @variable + (COALESCE(`credit`,0) - COALESCE(`debit`,0)) `balance` FROM billing_ledger ORDER BY id asc
當我使用這個查詢時,我沒有得到預期的平衡
SET @variable = 0; SELECT id, date, particulars, debit, credit, @variable := @variable + (COALESCE(`credit`,0) - COALESCE(`debit`,0)) `balance` FROM billing_ledger where date >= '2021-01-01' ORDER BY id asc
我希望第二個查詢也考慮上述行,但要給我以下日期的結果 with
where
子句和 withLIMIT
這是小提琴:FiddleLink
在小提琴中,我們可以看到第二個查詢沒有考慮上面的行,因此餘額不正確,因為它在第一個查詢中。
當您使用使用者定義的變數進行迭代併計算平衡時,您必須將初始變數 ti 設置為正確的數量
SET @variable = 0; SELECT -SUM(debit) + SUM(credit) INTO @variable FROM billing_ledger where date < '2021-01-01'; SELECT id, date, particulars, debit, credit , @variable := @variable + (COALESCE(`credit`,0) - COALESCE(`debit`,0)) `balance` FROM billing_ledger where date >= '2021-01-01' ORDER BY id asc ;
✓ ✓ 編號 | 日期 | 詳情 | 借方| 信用 | 平衡 --: | :--------- | :-------------------- | ----: | -----: | ------: 112 | 2021-01-01 | 購買的物品:雞蛋 | 200 | *空*| 2700 113 | 2021-01-02 | 購買的物品:洋蔥 | 2300 | *空*| 400