2017-12-31 245 views
0

私は条件は以下のようになり、SQLクエリがあります。SQLで `others`をどのように表現しますか?

select ...... 
FROM TABLE1, TABLE2 
where ....... 
AND TABLE1.TYPE = CASE WHEN TABLE2.TYPE = 2 THEN 'S' ELSE (NOT S) 

どのように私はこのNOT Sを表現することができますか?つまり私は、TABLE2.TYPE2、またはときTABLE2.TYPE2以外のものであるときTABLE1.TYPES以外のものである場合、クエリがTABLE1.TYPE = S行になりたいです。

Oracle 11S2でこのクエリを実行しています。

+1

あなたが必要とするものを表現する正しい方法であるゴードンの答えを読んで理解してください。次に、これを読んで数分を過ごすことができます:http://xyproblem.info/ - あなたが質問した方法の何が間違っているかを理解する。あなたは、あなたが解決する必要があった「オリジナル」のことを尋ねるのではなく、あなたのやり方(既に間違った方向に進んでいた)をやる方法を尋ねました。 – mathguy

+0

@mathguyそうではありません。私は元の問題を述べましたが、私はそれを解決しようとしたことだけを言いました。これは、SOに質問するときの正しいアプローチです。私は '常に、どんな試行された解決策と共に広範な画像に関する情報を含んでいます。 – amyassin

答えて

3

使用単純な論理ではなく、case

where . . . and 
     (table2.type = 2 and table1.type = 'S' or 
     table2.type <> 2 and table2.type <> 'S' 
    ) 

これは、その列がNULL値を取らないことを前提としています。これは簡単に処理できますが、表現がやや複雑になります。

関連する問題