台灣最大程式設計社群網站
線上人數
600
 
會員總數:245465
討論主題:189222
歡迎您免費加入會員
討論區列表 >> Oracle >> SUM+ROWNUM=1的怪問題請教
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
SUM+ROWNUM=1的怪問題請教
價值 : 50 QP  點閱數:1606 回應數:5

樓主

hihi123
門外漢
0 125
1787 83
發送站內信

我有一個資料欄位sum_data如下




*************************************************
●因為需求,我要取最近的一筆sum_data,所以我下了指令如下,
 SELECT sum_data FROM TABLE01
 WHERE month < 10 ROWNUM = 1 ORDER BY month DESC
*************************************************
●但又因為我想查不到任何資料時也要返回一筆ROW,且值為0,所以加了SUM,
 SELECT sum_data FROM TABLE01
 WHERE month < 10 ROWNUM = 1 ORDER BY month DESC
*************************************************

以上有那位前輩可以解答小弟的疑問????!!!???

本篇文章發表於2013-08-29 16:00
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

hihi123
檢舉此回應
少打了一個AND, 請見諒

WHERE month < 10 AND ROWNUM = 1
本篇文章回覆於2013-08-29 16:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

hihi123
檢舉此回應

找到幾篇文章
http://jordenno.pixnet.net/blog/post/7275739-oracle-%E7%9A%84-rownum-%E7%9A%84%E5%84%AA%E5%85%88%E6%AC%8A%E6%AF%94-order-by-%E9%AB%98
http://www.itpub.net/thread-1086782-1-1.html


連這也要搞個子查詢才會取到最近一筆資料,真是....

這oracle 也太.....無言!!!!!!


本篇文章回覆於2013-08-29 16:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

fantasy
捐贈 VP 給 fantasy 檢舉此回應
Try...

本篇文章回覆於2013-08-30 10:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

Hsu, Harry
檢舉此回應
ROWNUM較ORDER BY更為優先,產生的序號不符合所需。參考以下:
1. 最近一筆資料
使用ROW_NUMBER函數,根據MONTH反向排序以產生序號,並擷取序號為1的資料列(Row)。
2. 若無符合資料,仍需傳回0(重點2)
利用純量彚總(Scalar Aggregate)運算只傳回1筆資料列之特性,即可解決此問題。

網址: http://sqlqna.blogspot.tw/2013/09/0.html
本篇文章回覆於2013-09-06 16:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

falcon
檢舉此回應
用rownum 來查詢最新資料有點奇怪,rownum 只是一個虛擬欄位,用來顯示查詢資料的列數而已,不應該拿來做資料新舊判斷,
如果真有這種需求,正確的做法應該是新增一個"修改日期"的欄位,用來記錄data insert時間
本篇文章回覆於2013-09-23 16:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.