私がこのクエリを持っているとしましょう、
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) ;