0

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

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

突出显示的值的情况下,您可以看到计算的 MAX() 不保留 NULL 值。我相信我已经读过默认情况下 MAX() 函数忽略 NULL,所以这是有道理的......但是......我想保留该行的 NULL,这意味着 SEQ_NO=2 的条目看起来像以下。

SEQ_NO TIMESTAMP MAX
2                       
2 2013 年 6 月 27 日 15:44 2013 年 6 月 27 日 15:44

我尝试过使用 KEEP() 函数,但不清楚我是否走在正确的道路上。

4

1 回答 1

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
于 2013-06-28T14:12:19.120 回答