简体   繁体   English

根据记录类型计算总和

[英]Calculate sum as per record type

I am stuck with the calculation function like the picture, I can only do the summing by debit. 我被图片的计算功能所困扰,我只能通过借方进行求和。

The singer is his system 歌手是他的系统

Saldo = IF THE POSITION Column 1 Column 2 credit debit debit So the result - credit , credit IF Column 1 Column 2 credits , then the result is a credit - credit , credit IF Column 1 Column 2 debit , credit + debit So the result , and so on as the picture Saldo = IF POSITION栏1栏2借方借方借方因此结果贷方信用IF栏1栏2借方,那么结果是贷方信用IF如果栏1栏2借方贷方+借方因此,以此类推

结果

here is my code 这是我的代码

select 
    no, 
    tanggal, 
    O.debet,
    (select sum(debet) from tbl_jurnal_umum where no <= O.no) 'Saldo'
from tbl_jurnal_umum O 
where nama_perkiraan = 'kas'

Something like this? 像这样吗

/*
DROP TABLE T;
CREATE TABLE T(NAME VARCHAR(3),ID INT, TRTYPE VARCHAR(1), AMOUNT INT);
INSERT INTO  T VALUES
('abc',1,'D','500'),('abc',1,'C','50'),('abc',1,'C','10'),('abc',1,'C','40'),
('abc',1,'D','500'),('abc',1,'C','100');
*/

SELECT S.NAME,S.ID,S.DEBIT,S.CREDIT,s.runtot runningtotal,
         CASE WHEN S.DEBIT <> '' THEN S.RUNTOT ELSE '' END AS  DebitRunningTotal,
         CASE WHEN S.DEBIT  = '' THEN S.RUNTOT ELSE '' END AS  CreditRunningTotal
from
(
SELECT T.NAME,T.ID,
         CASE WHEN T.TRTYPE = 'D' THEN T.AMOUNT ELSE '' END AS DEBIT,
         CASE WHEN T.TRTYPE = 'C' THEN T.AMOUNT ELSE '' END AS CREDIT,
          @RUNTOT:=@RUNTOT + (
            CASE WHEN TRTYPE = 'D' THEN AMOUNT
            ELSE AMOUNT * -1
            END ) 
            AS RUNTOT
FROM   (SELECT @RUNTOT:=0) RT, T T
) s

+------+------+-------+--------+--------------+-------------------+--------------------+
| NAME | ID   | DEBIT | CREDIT | runningtotal | DebitRunningTotal | CreditRunningTotal |
+------+------+-------+--------+--------------+-------------------+--------------------+
| abc  |    1 | 500   |        |          500 | 500               |                    |
| abc  |    1 |       | 50     |          450 |                   | 450                |
| abc  |    1 |       | 10     |          440 |                   | 440                |
| abc  |    1 |       | 40     |          400 |                   | 400                |
| abc  |    1 | 500   |        |          900 | 900               |                    |
| abc  |    1 |       | 100    |          800 |                   | 800                |
+------+------+-------+--------+--------------+-------------------+--------------------+

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM