gpt4 book ai didi

mysql - 如何更正每笔交易的 "Balance"。按日期分组

转载 作者:可可西里 更新时间:2023-11-01 08:39:44 24 4
gpt4 key购买 nike

美好的一天,我需要你们的帮助,以便我可以在交易日期的“降序”顺序中为每笔交易在“余额”列中生成正确的数据。

SELECT 
t.TR_DATE
t.DEBIT,
t.CREDIT,
@balance := @balance + t.DEBIT - t.CREDIT AS BALANCE
FROM
(
SELECT s.TR_DATE AS TR_DATE,
SUM(IF(s.AMT>0 AND s.SLE_CODE=11,s.AMT,0)) AS DEBIT,
SUM(IF(s.AMT<0 AND s.SLE_CODE=11,s.AMT,0)) * -1 AS CREDIT
FROM
sldtl AS s
LEFT JOIN
transtype
ON
transtype.TransTypeID = s.TR_CODE
WHERE
s.SL_BRCODE= 1 AND s.SL_CLIENTID= 267 AND s.SLC_CODE= 13 AND s.SLT_CODE= 15 AND
s.REF_NO= s.REF_NO AND s.TR_DATE <= CURDATE()
GROUP BY
s.TR_DATE DESC, s.TR_CODE, s.TR_CTLNO
) AS t , (SELECT @balance := 0) var;

以上查询结果以交易日期“ASC”顺序排列

Accounts Payable    
**Note in this Accounts Debit is a deduction.
Date of Deposit: 2011-12-31
Initial amount 79,799.44 as of 2011-12-31

+------------+-------------+---------------+-------------+
| Trans Date | Debit | Credit | Balance |
+------------+-------------+---------------+-------------+
| 2011-12-31 | 0.00 | 79,799.44 | 79,799.44 |->First Trans date
| 2012-01-15 | 0.00 | 560.27 | 80,359.71 |
| 2012-01-31 | 0.00 | 500.00 | 80,859.71 |
| .......... | ........ | ........... | ........... |
| .......... | ........ | ........... | ........... |
| .......... | ........ | ........... | ........... |
| .......... | ........ | ........... | ........... |
| 2016-03-15 | 0.00 | 1,000.00 | 92,218.37 |
| 2016-03-30 | 0.00 | 1,000.00 | 93,218.37 |
| 2016-04-06 | 30,000.00 | 0.00 | 63,218.37 |->Last Trans date
+------------+-------------+---------------+-------------+

当我将“ASC”替换为“DESC”时,余额将成为最后一笔交易的金额。比如借方=30,000,余额=30,000。

交易日期的“DESC”顺序。需要的结果。

Accounts Payable    
**Note in this Accounts Debit is a deduction.
Date of Deposit: 2011-12-31
Initial amount 79,799.44 as of 2011-12-31
+------------+-------------+---------------+-------------+
| Trans Date | Debit | Credit | Balance |
+------------+-------------+---------------+-------------+
| 2016-04-06 | 30,000.00 | 0.00 | 63,218.37 |->Last Trans date
| 2016-03-30 | 0.00 | 1,000.00 | 93,218.37 |
| 2016-03-15 | 0.00 | 1,000.00 | 92,218.37 |
| .......... | ........ | ........... | ........... |
| .......... | ........ | ........... | ........... |
| .......... | ........ | ........... | ........... |
| .......... | ........ | ........... | ........... |
| 2012-01-31 | 0.00 | 500.00 | 80,859.71 |
| 2012-01-15 | 0.00 | 560.27 | 80,359.71 |
| 2011-12-31 | 0.00 | 79,799.44 | 79,799.44 |->First Trans date
+------------+-------------+---------------+-------------+

编辑于 TR_DATE

最佳答案

经过讨论,我终于得出了这个结论:

SELECT 
*
FROM
(
SELECT
t.TR_DATE
t.DEBIT,
t.CREDIT,
@balance := @balance + t.DEBIT - t.CREDIT AS BALANCE
FROM
(
SELECT s.TR_DATE AS TR_DATE,
SUM(IF(s.AMT>0 AND s.SLE_CODE=11,s.AMT,0)) AS DEBIT,
SUM(IF(s.AMT<0 AND s.SLE_CODE=11,s.AMT,0)) * -1 AS CREDIT
FROM
sldtl AS s
LEFT JOIN
transtype
ON
transtype.TransTypeID = s.TR_CODE
WHERE
s.SL_BRCODE= 1 AND s.SL_CLIENTID= 267 AND s.SLC_CODE= 13 AND s.SLT_CODE= 15 AND
s.REF_NO= s.REF_NO AND s.TR_DATE <= CURDATE()
GROUP BY
s.TR_DATE ASC, s.TR_CODE, s.TR_CTLNO
) AS t , (SELECT @balance := 0) var
) firstTableOutput
ORDER BY firstTableOutput.TR_DATE DESC;

注意:

  • GROUPING BY s.TR_DATE升序顺序。
  • 然后为表格创建一个别名
  • 最后按降序顺序对别名表的输出进行排序。

关于mysql - 如何更正每笔交易的 "Balance"。按日期分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37981402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com