在MAX()ORDER BY中保留NULL

时间:2013-06-28 14:10:07

标签: sql oracle10g aggregate-functions

我对结果输出有以下查询。

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()函数,但我不清楚我是在正确的道路上。

1 个答案:

答案 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