14

2つのDATETIME列の最大値に基づく数式で行を更新する必要があります。私は通常これを行います:

GREATEST(date_one, date_two)

ただし、両方の列をNULLにすることができます。もう一方がNULLの場合でも最大の日付が必要であり(もちろん、両方がNULLの場合はNULLを期待します)、GREATEST()一方の列がNULLの場合はNULLを返します。

これはうまくいくようです:

GREATEST(COALESCE(date_one, date_two), COALESCE(date_two, date_one))

しかし、私は疑問に思います...私はもっと簡単な方法を逃していますか?

4

2 に答える 2

15

COALESCE(GREATEST(date_one, date_two), date_one, date_two)

于 2010-04-21T15:15:19.497 に答える
1

複数の列に対する私の解決策は次のとおりです。

SELECT NULLIF(
  GREATEST(
    NVL(NULL,     to_date('01011980','ddmmyyyy')), --COLUMN 1
    NVL(sysdate,  to_date('01011980','ddmmyyyy')), --COLUMN 2
    NVL(NULL,     to_date('01011980','ddmmyyyy')), --COLUMN 3
    NVL(sysdate-1,to_date('01011980','ddmmyyyy'))  --COLUMN 4
  ),to_date('01011980','ddmmyyyy')
) as greatest_date
FROM DUAL;
于 2014-10-14T13:23:18.137 に答える