我正在Oracle數據庫上運行請求。 我的表中的一個包含時隙的元件,並且可以存在於相同的元素幾個時隙,使得下面的例子是正確的:如何返回SQL中的maxvalue或nullvalue?
ID ELEMENT_ID BEGIN_DATE END_DATE
--------------------------------------------
1 1 01/01/2007 01/06/2007
2 1 01/06/2007
3 2 01/01/2006 01/07/2006
4 2 01/07/2006 31/12/2006
爲其END_DATE
未填充的時隙意味着它仍然是運行(所以,這是Element的最新時間段)。
因此,當我搜索最近的每個元素END_DATE
,我想獲得行#2和#4。 所以,我面臨的問題是將NULL視爲最高END_DATE
...
是否可以在一個SQL請求中執行此操作?
當然我想簡單:
SELECT MAX(END_DATE) FROM ...
,但它不是足夠多,因爲NULL值。
在此先感謝。
這裏假設所有的你end_dates在未來,這似乎是基於你的例子。 – LesterDove 2010-08-10 15:41:46
這是這種情況,我的end_dates在將來都沒有。感謝該片段,它工作正常!不過,我仍然遇到最後一個小問題,因爲我的下一步是選擇整個行以標識MAX(END_DATE)...因此,在'END_DATE'中插入假日期與' SELECT * FROM MyTable WHERE END_DATE =(SELECT MAX(...));'最後一個提示對我來說? :) – Clem 2010-08-10 15:59:43
從技術上講,只要您將蘋果與蘋果進行比較並替換比較兩側的空值,就可以使用您的方法。 SELECT * FROM MyTable WHERE NVL(END_DATE,SYSDATE + 1)=(SELECT MAX(。 ..)); 有可能是其他一些方法... – LesterDove 2010-08-10 16:11:34