我有一个名为ct_rt的表,并且有一个字段ct。该文件中的数据如下:
100
450
-20
500
300
-50
现在我希望得到以下结果:
100
550
530
1030
1330
1280
这是添加每一行及其后续行。那么我怎样才能获得所需的输出?我使用的是Oracle Database 12c企业版12.1.0.1.0版 - 64位生产版。请帮帮我。
谢谢。 :)
答案 0 :(得分:4)
这可以使用具有"累积和":
的窗口函数来完成select ct,
sum(ct) over (order by some_column) as the_sum
from ct_rt
order by some_column;
您 提供一列来对结果进行排序。除非您指定order by
,否则关系数据库中的行 不 已排序并基本上以随机顺序排列。累积金额具有相同的限制"因此,你必须在窗口函数的定义中提供order by
。
排序此结果的一个很好的候选者是一个时间戳列,用于定义何时插入(或更新)行。一个独特的,不断增加的id列也是一个很好的候选者。
答案 1 :(得分:0)
使用相关子查询的解决方案(您需要一个id字段)
SELECT (
SELECT sum(ct)
FROM ct_rt AS sub
WHERE sub.id <= qry.id
)
FROM ct_rt AS qry
ORDER BY qry.id
编辑: 这是一种替代解决方案。 a_horse_with_no_name的解决方案最有可能超越这个。
答案 2 :(得分:-2)
检查一下它可以帮助你
select numbers,SUM(numbers) over(order by rowid) nxtx
from txd;