Mysql

使用 Pagination MYSQL 從以前的記錄計算借方貸方餘額

  • February 22, 2021

我有以下架構和展示數據的表-

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 

我希望第二個查詢也考慮上述行,但要給我以下日期的結果 withwhere子句和 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

引用自:https://dba.stackexchange.com/questions/285810