我有一个包含3列的表:id,date和amount,但我想为每个日期(最后一列)获得累积的SUM。
您是否有一个简单的解决方案如何添加此列? 我正在尝试这个:
SELECT date, sum(amount) as accumulated
FROM table group by date
WHERE max(date);
我应该为此使用OVER()吗?
答案 0 :(得分:2)
使用窗口函数来计算每天的总数:
SELECT date,
amount,
sum(amount) over (partition by date) as accumulated
FROM the_table;
但是,只有当您的日期都具有相同的时间部分时才会起作用(在Oracle中,DATE
列也包含时间)。要确保忽略时间部分,请使用trunc()
确保所有时间部分都规范化为00:00:00
SELECT date,
amount,
sum(amount) over (partition by trunc(date)) as accumulated
FROM the_table;
答案 1 :(得分:1)
使用此:
SELECT T.ID, T.DATE, T.AMOUNT, (SELECT SUM(S.AMOUNT) FROM TABLE S WHERE S.DATE=T.DATE) ACCUMULATED
from
table T
这将为您提供表格中的记录,其中包含该日期所有记录的总和。