2012-08-30 24 views
8

WHERE節の条件でデータを取得したいとします。複数の条件をネストしたWHERE句

Name Location Age 
---------------------- 
AAA  Bhuj  24 
BBB  Mumbai  22 
CCC  Bhuj  18 
DDD  Bhuj  27 
EEE  Mumbai  26 

WHERE句の私の条件は次のとおりです:このコードの動作

SELECT * FROM testing 
WHERE 
CASE Location WHEN 'Bhuj' THEN Age>20 
       WHEN 'Mumbai' THEN Age>25 
END; 


if location = 'Bhuj' then Age>20 else if location = 'Mumbai' then Age>25

私はこれを達成するために、このコードをしようとしています。ここ
は、私のテーブルの何かが似ていますMySQL(see this SQLFiddle)では問題ありませんが、SQL Server(see this SQLFiddle)では動作せず、次のエラーが発生しますまたは:

Incorrect syntax near '>'.: SELECT * FROM testing WHERE case Location When 'Bhuj' then Age>20 When 'Mumbai' then Age>25 end

いずれかの提案がありますか?

+1

質問をdownvoteする理由はありません。 Upvoted :) – hgulyan

+0

ケースは必要ありません –

+0

@NitinGoyal私の実際のクエリは、複雑で複雑です。どこで 'CASE'ステートメントを使わなければならないのですか?私はそれをここに簡単に示しました。 – hims056

答えて

6
SELECT * FROM testing 
WHERE 
Age > case Location When 'Bhuj' then 20 
       When 'Mumbai' then 25 
       end 
+0

ああ私の非常に些細な間違い。まさに私が望んでいたもの。 – hims056

13

は、私は、これはあなたが達成しようとしているものだと思います

SELECT * 
    FROM testing 
    WHERE (Location = 'Bhuj' AND Age>20) 
     OR (Location = 'Mumbai' AND Age>25) 

チェックSQLFiddle

UPDATE:

Caseステートメントは、値を返します、あなたは内部の状態を持つことができませんそれ。

+0

はい。しかし、私が例で示した 'CASE'文を使うことはできませんか? – hims056

+0

更新を確認してください。 – hgulyan

+0

'WHERE'節で' CASE'を使うことができます。 podiluskaによる別の答えを見てください。 – hims056

関連する問題