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 に答える