5

Oracleで条件付き更新ステートメントを作成する際に問題があります。わかりやすくするために、問題を単純化します。基本的に、更新ステートメントは次のようになります。

UPDATE SAMPLE_TAB1 t 
   SET t.sample_column1 =NVL(t.sample_column1, **SOME LOGIC**);

パーツは次の***SOME LOGIC***ようになります: (これは単なる疑似コードであると考えてください)

IF ((SELECT sample_column2 FROM SAMPLE_TAB2 
       WHERE sample_column2= sample_value2
       AND sample_column3  = sample_value3 )='FALSE' THEN 
   t.sample_column1 =0;
ELSE

   t.sample_column1 =(SELECT sample_column1 FROM SAMPLE_TAB3 
                         WHERE sample_column4= sample_value4
                         AND sample_column5  = sample_value5 )

END IF;

この問題に関するあらゆる種類の考えを歓迎します。ありがとうございました。

4

2 に答える 2

1

以下を試してください

UPDATE SAMPLE_TAB1 t 
   SET t.sample_column1 = NVL( (SELECT sample_column2  FROM ...), 0)
WHERE t.sample_column1 is not null
;
于 2013-08-30T16:13:17.850 に答える