首页 > 解决方案 > sql查询计算总和并从前几行添加总和

问题描述

这是我的桌子 T1

  dat_dt      credit     debit
 --------     ------     -----
22-02-2019      10         5
25-02-2019      30         60
10-03-2019      50         40
13-03-2019      100        10

我想生成以下输出

max_date    cr_sum    progressive credit  dr_sum progressive debit 
--------    ------    ------------------  ------  -----------------
25-02-2019    40            40              65           65
13-03-2019    150           190             50           115

我想计算每个月的信用和借方的总和,累进信用是当月的信用总和加上上个月的累进信用的列。累进借记也是一样。max_date 是每个月的最大日期。除了使用循环之外,还有什么简单的方法可以得到这个输出吗?

标签: sqloracleoracle11g

解决方案


你可以试试下面 -

select max(dat_date) as max_date,sum(credit) as cr_sum,
       sum(credit) over(order by EXTRACT(month FROM dat_date),EXTRACT(year FROM dat_date)) as progressive_credit,
       sum(debit) as dr_sum,
       sum(debit) over(order by EXTRACT(month FROM dat_date),EXTRACT(year FROM dat_date)) as progressive_debit
group by EXTRACT(month FROM dat_date),EXTRACT(year FROM dat_date)

推荐阅读