我们的环境是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
感谢你在这方面的帮助。
答案 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
;