我在Oracle数据库中有一个表,其中包含以下感兴趣的字段:位置,产品,日期,金额。我想编写一个查询,按地点,产品和日期获得总计金额。我在下面列出了一个我希望得到的结果的示例表。按组SQL运行总计(Oracle)
我可以得到一个运行总数,但当我到达一个新的位置/产品时,我无法重置它。这是我迄今为止的代码,任何帮助将不胜感激,我有一种感觉,这是一个简单的修复。
select a.*, sum(Amount) over (order by Location, Product, Date) as Running_Amt
from Example_Table a
+----------+---------+-----------+------------+------------+
| Location | Product | Date | Amount |Running_Amt |
+----------+---------+-----------+------------+------------+
| A | aa | 1/1/2013 | 100 | 100 |
| A | aa | 1/5/2013 | -50 | 50 |
| A | aa | 5/1/2013 | 100 | 150 |
| A | aa | 8/1/2013 | 100 | 250 |
| A | bb | 1/1/2013 | 500 | 500 |
| A | bb | 1/5/2013 | -100 | 400 |
| A | bb | 5/1/2013 | -100 | 300 |
| A | bb | 8/1/2013 | 250 | 550 |
| C | aa | 3/1/2013 | 550 | 550 |
| C | aa | 5/5/2013 | -50 | 600 |
| C | dd | 10/3/2013 | 999 | 999 |
| C | dd | 12/2/2013 | 1 | 1000 |
+----------+---------+-----------+------------+------------+
您没有找到解释如何分区数据的文章有用吗?虽然答案是分区。 –
我没有downvote这个答案,但我认为肯定有改进的余地。也许考虑增加更多的上下文/内容 - 似乎对SO有共识,[仅有链接不足以获得好的答案](http://meta.stackexchange.com/questions/7515/why-is-linking-bad )。 – crennie
另外,这个链接可能更适合作为评论而不是答案......但不幸的是,你需要50个代表。如果你像我一样,你认为这是蹩脚的,那么请查看[这个关于它的问题](http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation ),这给出了一些动机的限制,并且还提出了一些写出好的答案的方法:D – crennie