SQLを仕事で書いてますが、困ってます。
○テーブルA
number
nendo
gaku
riyu
○テーブルB
number
code
テーブルAのgakuの値を更新するSQLを作りたいです。条件は
・テーブルAのriyu <> -1の全てのレコードのgakuに値をセットする。
セットする値は、レコードそれぞれのnumberでテーブルAとテーブルB
を結合して、テーブルBのcode=1なら1000,code=2なら2000、code=3なら3000
以下のようなSQLを書きましたがうまくいきません。
update テーブルA a set gaku = (
select
case
WHEN b.code = 1 1000
WHEN b.code = 2 2000
WHEN b.code = 3 3000
ELSE 0
END gaku
from テーブルA a,テーブルB b
where a.number = b.number
and (a.number,a.nendo) IN ( select number,nendo from テーブルA where riyu <> -1 )
)
where (a.number,a.nendo) IN ( select number,nendo from テーブルA where riyu <> -1 )
DBはOracle10gです。
よろしくお願いします。