1
的澄清說明對於ORACLE 11g而言,我發現OVER子句似乎對某些分析非常有用。即使在查看OVER子句中的ORACLE手冊之後,我仍然有一些理解語法的問題。使用OVER子句
我試圖獲得按時間順序捐贈的所有禮品的累計金額。這全部來自只有一個表格,Donations包括查詢中下面看到的所有列。
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))
捐贈表包括:DonationID,慈善,金額,GiftDate,DonorID
我的主要困惑是,當我不使用OVER子句我可以得到結果集沒有問題。但是,當我嘗試使用OVER時,我開始得到很多語法錯誤和這種性質的事情。我想學習如何正確使用OVER。
我知道錯誤消息通常是當您鍵入無效的列標題或超出範圍。爲什麼不能看到Donations.amount是一個有效的列名稱?我可能會搞亂這個新條款的語法。
感謝您注意到我修復了這個錯誤,並且不再發生錯誤。除此之外,你會說我正確使用OVER子句嗎?我真的不確定我是否獲得每件禮物的累積權利 –
@ErikVorcov我通過'giftdate'命令,而不是金額。另外,你考慮一個「由......劃分」條款 - 也許由慈善機構? – Mureinik
是的,我正在考慮它,但我不是使用語法的粉絲,我不完全理解!你能簡單介紹一下分區嗎?它是否將您正在操作的組合在一起,然後您可以使用它上的命令? –