2013-06-28 21 views
0

我對結果輸出有以下查詢。在MAX中保留NULL()ORDER BY

select seq_no, timestamp, 
max(timestamp) over (partition by seq_no) as max 
from temp 
 
SEQ_NO TIMESTAMP  MAX 
1  6/27/2013 15:42 6/27/2013 15:43 
1  6/27/2013 15:43 6/27/2013 15:43 
1  6/27/2013 15:43 6/27/2013 15:43 
1  6/27/2013 15:43 6/27/2013 15:43 
2      6/27/2013 15:44 
2  6/27/2013 15:44 6/27/2013 15:44 

的情況下突顯值,你可以看到計算MAX()不保留NULL值。我相信我已經讀過,默認情況下,MAX()函數忽略NULL,所以這是有道理的......但是...我想保留該行的NULL,這意味着SEQ_NO = 2的條目看起來像下列。

 
SEQ_NO TIMESTAMP  MAX 
2      
2  6/27/2013 15:44 6/27/2013 15:44 

我試過玩KEEP()函數,但我不清楚我在正確的道路上。

+0

我不知道我知道......你要爲每個seq_no _except_上有'NULL'時間戳行最大時間戳?你究竟在努力實現什麼? –

+0

是的,當原始值爲空時,我不想設置最大列值。問題是我也希望在另一個計算中使用這個結果,所以我希望簡化陳述。 – McArthey

+0

然後戈登的答案會很好,只是想確保我正確理解你的意圖:) –

回答

2

只需使用一個case聲明:

select seq_no, timestamp, 
     (case when timestamp is not null 
      then max(timestamp) over (partition by seq_no) 
     end) as maxtimestamp 
from temp 
+0

這工作正常,我會接受作爲答案,但我希望的東西,可能也包括在另一個分析功能。謝謝! – McArthey