2013-06-28 20 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