SQL中的列摘要

时间:2014-10-29 08:13:15

标签: sql db2

我们的环境是z / OS DB2。 我在表格中有以下数据。

     Year     Amount

     1998      2000
     1999      3000
     2000      2500
     2001     10000

使用SQL Query我想要的结果如下所示。 结果应如下:

     Year     Amount    Total_Amount_Invested

     1998      2000        2000
     1999      3000        5000
     2000      2500        7500
     2001     10000       17500

感谢你在这方面的帮助。

2 个答案:

答案 0 :(得分:1)

这称为运行总计算。 我创建了一个虚拟功能,你可以检查一下,我希望你能从中得到一些想法。

create table Test
(
    year int,
    amount int
)

insert into Test (year,amount)
values
(1998,2000),
(1999,3000),
(2000,2500),
(2001,10000)

select 
    t1.year,
    sum(t2.amount) 
from 
    Test t1
    join test t2
    ON T2.year <= T1.year
group by
T1.year

如果您希望使用主键

,我已经确定了计算总和的年份

你也可以用sql小提琴检查 这是我创造的DEMO。 DEMO Click to see

答案 1 :(得分:1)

另一种方法是使用OLAP functions

declare global temporary table session.test (
     year int
    ,amount int
) ON COMMIT PRESERVE ROWS;

insert into session.test (year,amount)
    SELECT 1998,2000  FROM SYSIBM.SYSDUMMY1 UNION ALL
    SELECT 1999,3000  FROM SYSIBM.SYSDUMMY1 UNION ALL
    SELECT 2000,2500  FROM SYSIBM.SYSDUMMY1 UNION ALL
    SELECT 2001,10000 FROM SYSIBM.SYSDUMMY1
;

SELECT 
     year
    ,sumamt
    ,sum(sumamt) OVER (ORDER BY year ROWS UNBOUNDED PRECEDING)
FROM (
    select 
         year
        ,sum(amount) AS SUMAMT
    from session.test t1
    GROUP BY year
) A
;