日期的Oracle SQL累积值
我有一个包含3列的表:id、date和amount,但我想得到上一列中每个日期的累计总和 你有没有一个简单的方法来添加这个列? 我正在尝试这样做:日期的Oracle SQL累积值,sql,oracle,Sql,Oracle,我有一个包含3列的表:id、date和amount,但我想得到上一列中每个日期的累计总和 你有没有一个简单的方法来添加这个列? 我正在尝试这样做: SELECT date, sum(amount) as accumulated FROM table group by date WHERE max(date); 我是否应该使用此功能?使用此功能: SELECT T.ID, T.DATE, T.AMOUNT, (SELECT SUM(S.AMOUNT) FROM TABLE S WHERE S
SELECT date, sum(amount) as accumulated
FROM table group by date
WHERE max(date);
我是否应该使用此功能?使用此功能:
SELECT T.ID, T.DATE, T.AMOUNT, (SELECT SUM(S.AMOUNT) FROM TABLE S WHERE S.DATE=T.DATE) ACCUMULATED
from
table T
这将为您提供表中的记录以及该日期所有记录的总和。使用窗口函数计算每天的总和:
SELECT date,
amount,
sum(amount) over (partition by date) as accumulated
FROM the_table;
但是,这只适用于所有日期在Oracle中都具有相同的时间部分的情况,日期列也包含时间。要确保忽略时间部分,请使用trunc确保所有时间部分都标准化为00:00:00
请不要使用不适用于您的问题的标记。我删除了数据库标签,因为不清楚您实际使用的是哪一个。请仅添加您实际使用的数据库的标记。在现实世界中,计算运行总数取决于数据库服务器的品牌和型号。这里是MySQL:您的查询语法错误,group by在where子句之后。请阅读并接受答案。我的所有列都在同一个表中。我正在检查这个。谢谢你,但它不起作用。我认为你不能从其他选择器中使用s.date,s.amount?表T前面的from也不见了。我没看到from…它加了谢谢,还有一个T.id的点。但是我正在修复它:选择transaction.id、transaction.date、transaction.amount,从maintable rev中选择SUMrev.amount,其中rev.date=maintable transaction中的transaction.date;我希望我的语法也很好。
SELECT date,
amount,
sum(amount) over (partition by trunc(date)) as accumulated
FROM the_table;