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))
捐款表包括:捐款ID,慈善捐款,金额,礼品券,捐款人
我的主要困惑是,当我不使用OVER子句时,我可以得到结果集没问题。但是,当我尝试使用OVER时,我开始得到很多语法错误和那种性质的东西。我想学习如何正确使用OVER。
我知道错误消息通常是在您键入无效的列标题或者超出范围时。为什么它不能看到Donations.amount是有效的列名?我可能只是弄乱了这个新条款的语法。
答案 0 :(得分:1)
该错误与分析(窗口)函数无关。
该表格简单地命名为Donation s ,复数形式,您选择的其中一列是Donation.amount
,其中包含捐赠,以单数形式显示。扯掉失踪的" s"那里你应该没事。