내가 작업하고있는 쿼리의 표현은 다음과 같습니다.WHERE 절에 CASE 문을 중첩하고 여러 값을 반환하는 방법
SELECT T1.Col3
FROM Table1 T1
WHERE T1.Col1 IN ('Value1','Value2')
AND (CASE
WHEN T1.Col1 = 'Value1'
THEN T1.Col2 IN ('Value3','Value4','Value5')
WHEN T1.Col1 = 'Value2'
THEN T1.Col2 IN ('Value6','Value7','Value8')
END
)
어떤 이유로 든 두 번째 구문에서 항상 오류가 발생합니다. 두 IN 문에서 첫 번째 쉼표에서는 구문 오류가 발생하지만 두 번째 문에서는 구문 오류가 발생합니다. 그게 아니라면 메이크업 변화해야한다는, 나는 또한 다음과 같은 OR 문 문에 중첩 변경 시도 :
THEN (T1.COL2 = 'Value3') OR (T1.COL2 = 'Value4') OR (T1.COL2 = 'Value5')
대신 내가 처음 OR 문 주위에 구문 오류가 발생합니다.
이전에 WHERE 절에서 CASE를 사용했지만 하나의 값만 반환했습니다. 첫 번째 쉼표 또는 OR 문에서 구문 오류가 발생한다는 사실로 인해 다중 값을 반환 할 수 없다고 생각됩니다.
이 문제에 관해 알려줄 수있는 조명을 알려 주시면 대단히 감사하겠습니다.
P. temp 테이블을 만들고 조건부 DELETE 문을 실행하여 이미 위의 CASE 문으로 수행하려는 것과 동일한 결과를 얻는 방법으로 이미 작업을 수행하고 있습니다. 그러나이 질문에 대한 다른 방법이 가능한지 알고 싶다면 궁금합니다.