选择“按日期求和”以区分SQL Oracle

选择“按日期求和”以区分SQL Oracle,sql,oracle,Sql,Oracle,事务表 No Date Amount 1 06-07-2017 1000 2 06-07-2017 1500 3 08-07-2017 2000 4 09-07-2017 2000 5 09-07-2017 2000 6 09-07-2017 2000 使用单查询无查询循环是否可以实现此结果 No Date Total Amount 1 06-07-2017 2500 2 08-07-201

事务表

No   Date        Amount 
1   06-07-2017   1000
2   06-07-2017   1500
3   08-07-2017   2000
4   09-07-2017   2000
5   09-07-2017   2000
6   09-07-2017   2000
使用单查询无查询循环是否可以实现此结果

No   Date        Total Amount
1   06-07-2017      2500
2   08-07-2017      2000
3   09-07-2017      6000
你在找团员吗

编辑:日期字段似乎包含日期和时间,而时间部分应该被截断-Trunc-聚合时请参见注释了解确切结果:

select row_number() over (order by date) as No,
       date, sum(amount) as "Total Amount"
from t
group by date
order by date;
注意:在Oracle中,日期数据类型可以包含时间组件,而这可能在输出中不可见。如果是这样的话,聚合就不会达到预期效果。如果是这种情况,则:

select row_number() over (order by trunc(date)) as No,
       trunc(date) as date, sum(amount) as "Total Amount"
from t
group by trunc(date)
order by trunc(date);

是的,是的!提示:GROUPBY和SUM。事务表是否实际有一个名为No的列?你真的想要结果中的“不”,而不是记录中的“不”?这是唯一困难的部分。嗯,不是很难;您可以使用ROW\u NUMBER对结果行进行编号。如果您不需要“无”列,那么请确保您的请求中没有显示任何所需结果。该列别名的单引号-Oracle会接受吗?@jarlh:很抱歉输入错误,总金额应为双引号,因为肯定不起作用,它没有总结日期和总结结果amount@Angger:总结日期是什么意思?如何总结日期?我们将按dateStill结果(如select*from transaction@Dmitry Bychenko)对金额进行汇总,但这样做行不通。它将抛出错误ORA-00979:不是GROUPBY表达式,因为在Select中使用rownum时,您没有在GROUPBY子句中使用rownum。
select row_number() over (order by trunc(date)) as No,
       trunc(date) as date, sum(amount) as "Total Amount"
from t
group by trunc(date)
order by trunc(date);