如何更正“余额"每笔交易.按日期分组DESC [英] How to correct the "Balance" per transaction. Group by Date DESC
本文介绍了如何更正“余额"每笔交易.按日期分组DESC的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
早上好,我需要您的帮助,以便我可以按照交易日期的降序"顺序在每笔交易的余额"列中生成正确的数据.
Good day, I need your help guys so that I can generate the correct data in "BALANCE" column for every transaction in "Descending" order of the transaction date.
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"顺序
Result of the query above with "ASC" order of the transaction date
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.
When I replace the "ASC" to "DESC" the balance will become the amount of the last transaction. like debit=30,000, balance=30,000 also.
"DESC"交易日期顺序.所需结果.
"DESC" order of transaction date. Needed Result.
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编辑
推荐答案
经过讨论,我终于想到了:
After having a discussion I finally came with this:
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
按升顺序. - 然后对表格进行别名.
- 最后按降序的顺序对别名表的输出进行排序.
GROUPING BY s.TR_DATE
in ascending order.- Then make an alias of the table.
- And finally sort the alias table's output in descending order.
这篇关于如何更正“余额"每笔交易.按日期分组DESC的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文