【发布时间】:2018-03-06 18:15:30
【问题描述】:
ORACLE 11g 的新手,我注意到 OVER 子句似乎对某些分析非常有用。即使在查看了关于 OVER 子句的 ORACLE 手册之后,我在理解我相信的语法时也遇到了一些问题。
我正在尝试获取按时间顺序捐赠的所有礼物的累计金额。这一切都来自一个表,捐赠,其中包括查询中下面看到的所有列。
SELECT Donations.donationid, Donation.charity, Donation.giftdate, Donation.amount, SUM(Donation.amount)
OVER (ORDER BY Donations.amount) AS Total_Gift_Amount
FROM Donations.donations
ORDER BY Total_Gift_Amount DESC;
我以为我走在了正确的轨道上,但我遗漏了一些东西,这导致我的专栏超出了范围。我收到的错误是
Error at line 1: ORA-00904:"DONATION"."AMOUNT": invalid identifier (its the SUM(donations.donations))
Donations 表包括:DonationID、Charity、Amount、GiftDate、DonorID
我的主要困惑是,当我不使用 OVER 子句时,我可以得到结果集没有问题。但是,当我尝试使用 OVER 时,我开始遇到很多语法错误和类似的事情。不过我想学习如何正确使用OVER。
我知道错误消息通常是当您键入无效的列标题或超出范围时。为什么它看不到 Donations.amount 是一个有效的列名?我可能只是弄乱了这个新子句的语法。
【问题讨论】: