查询借方/贷方交易

时间:2015-03-11 03:32:14

标签: sql sqlite

以下是我正在使用的查询:

select Date2,  
       sum(case when Type='Debit' then Amount else 0 end)as DebitAmount,  
       sum(case when Type='Credit' then Amount else 0 end)as CreditAmount,  
      ((sum(case when Type='Debit' then Amount else 0 end))-sum(case when Type='Credit' then Amount else 0 end)) as Balance 
from MainTransaction 
group by MainTransaction.Date2 
order by Date2

OutPut:

Date       | Debit   | Credit | Balance
-----------+---------+--------+-----------
2015-02-10 | 0.0     | 0      | 0.0
2015-02-12 | 19200.0 | 0      | 19200.0
2015-03-01 | 62000.0 | 0      | 62000.0
2015-03-08 | 999.0   | 0      | 999.0
2015-03-09 | 10064.0 | 0      | 10064.0

我希望它还能显示总余额,我的意思是日期为11.03.2015它还会显示总到期日期11.03.2015 -credit到日期11.03.2015。 我该怎么办......我根本无法做到总结,因为我正在使用group by date2 ..

1 个答案:

答案 0 :(得分:0)

设置{0} =' 2015-03-11'

select ifnull(mt.Date2, mt.Date2s), 
    sum(case when mt.Type='Debit' then mt.Amount else 0 end)as DebitAmount,  
       sum(case when mt.Type='Credit' then mt.Amount else 0 end)as CreditAmount,  
       ((sum(case when mt.Type='Debit' then mt.Amount else 0 end))-sum(case when mt.Type ='Credit' then mt.Amount else 0 end)) as Balance 
from (
    select mt.*, sd.*
    from MainTransaction as mt
        left join 
        (select {0} as Date2s) as sd On mt.date2 = sd.Date2s
    where mt.date2 < {0}
    union all
    select mt.*, sd.*
    from (select {0} as Date2s) as sd
        left join 
        MainTransaction as mt On mt.date2 = sd.Date2s
    where mt.date2 is null
    ) as mt
group by ifnull(mt.Date2, mt.Date2s)
order by ifnull(mt.Date2, mt.Date2s)