Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
日期的Oracle SQL累积值_Sql_Oracle - Fatal编程技术网

日期的Oracle SQL累积值

日期的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

我有一个包含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.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;