私がこのクエリを持っているとしましょう、
SELECT T.A FROM T WHERE T.A IN (CASE WHEN T.B = 1 THEN (1,2,3) ELSE (4,5) END)
このクエリは可能ですか、それとも代替手段ですか。
私がこのクエリを持っているとしましょう、
SELECT T.A FROM T WHERE T.A IN (CASE WHEN T.B = 1 THEN (1,2,3) ELSE (4,5) END)
このクエリは可能ですか、それとも代替手段ですか。
where句でユースケースを使用しないでください
SELECT T.A FROM T WHERE (T.A IN (1,2,3) And T.B = 1) or (T.A in (4,5) and T.B <>1) 
CASE式です-明確に定義された型の単一の結果を返します。
条件のリストを評価し、複数の可能な結果式の1つを返します。
一部の複雑なWHERE句では、それを使用するのが理にかなっている場合があります(@Somebodyが問題の答えを示しているため、現在の句はなくても解決できます)が、単一の結果値または式を返すように構造化する必要があります。
SELECT T.A FROM T WHERE
  1 = CASE
         WHEN T.B = 1 AND T.A IN (1,2,3) THEN 1
         WHEN T.A IN (4,5) THEN 1
      END
SELECT T.A 
FROM T 
WHERE  T.B = 1      AND  T.A IN (1,2,3)  
   OR  T.B <> 1     AND  T.A IN (4,5) 
   OR  T.B IS NULL  AND  T.A IN (4,5) ;