プロが教える店舗&オフィスのセキュリティ対策術

SQLに関しまして質問させて頂きます。

テーブルAがあり、以下のような条件を一つの
SQL文で実現したいと思っています。

【条件】
(1)e列が1のものを対象に更新をかける
(2)条件(1)を満たすレコードのf列の値をsysdateで更新する
(3)条件(1)を満たすレコードのdの値に関しては
 「bが岡山 かつ cが男 であれば dを030へ更新し、
  そうでなければ dの値は更新しない」こととする

【テーブルA】
-------------------------------------------
a b c d e f
1 愛媛 男 010 1 2/5
2 岡山 男 050 1 1/30
3 岡山 女 020 0 1/12
-------------------------------------------

条件(3)が「bが岡山」といったように一つであれば
-------------------------------------------
UPDATE
A
SET
d = decode(b,'岡山','030',d),
  f = sysdate
WHERE
e = 1
-------------------------------------------
といったようにdecode関数を使用して実現できるのですが、
「bが岡山 かつ cが男」というように条件(3)が
二つの条件によって構成されている場合、
どうすれば良いか分かりません。
decode関数で複数の条件を指定することが出来ればいいのですが・・。

以上、ご存知の方がいらしましたら、
ご教授よろしくお願い致しますm(_ _)m

【環境】
oracle 9i

A 回答 (2件)

9iなら#1の方のとおりcase使えますけど、decodeでも出来ますよ。



d = decode(b,'岡山',decode(c,'男','030',d),d)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございますm(__)m
なるほど、EXCELのIF文みたいに
入れ子に出来るのですね。
勉強になりました!

お礼日時:2005/02/07 22:29

こんにちは。



DECODEじゃなくて、CASEを使えばいいですよ。
CASEのWHEN句に、複数条件をANDで指定します。
(^^ゞ
    • good
    • 0
この回答へのお礼

ご回答ありがとうございますm(__)m
9iからはdecodeの替わりにcaseが使えるみたいですね。

お礼日時:2005/02/07 22:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す