4

私には複雑な状況があります。「where句」に「case when」条件を含むSQLクエリを書きたいです。

そのように:

SELECT *
FROM <table>
WHERE
<Column1> in
   CASE <Column2>
      WHEN 1 THEN ('OP', 'CL') 
      WHEN 0 THEN ('RE', 'ST')
END

Column1 は「=」ではなく「in」でなければなりません。Column1 の条件に複数の値があるためです。そのクエリは、「',' 付近の構文が正しくありません」を返します。エラー。

何か提案をいただけますか?(下手な英語でごめんなさい。)

編集:誤解したと思います。Column2 が 1 の場合、条件は「IN ('OP', 'CL')」のようにする必要があります。それ以外の場合、Column1 は 2 です。条件は「IN ('RE', 'ST')」のようにする必要があります。

4

2 に答える 2

6

そのための式は必要ありません。次のようCASEに使用できます。OR

SELECT *
FROM <table>
WHERE (Column2 = 1 AND Column1 IN ('OP', 'CL')) OR
    (Column2 = 0 AND Column1 IN ('RE', 'ST'))
于 2012-09-14T12:27:58.437 に答える
-1
Select * from table where <Column1> in (Select case <Column2> when 1 then ('OP','CL') when
0 then  ('RE','ST'))
于 2012-09-14T12:30:22.050 に答える