2013-06-03 7 views
1

인 SQL() 함수는 아래 코드가 작동하지 않습니다. 가능한 경우 해결 방법이 도움이 필요합니다.case 문에있는 SQL 문이

날짜를 기준으로 특정 요소를 제외하려고하지만 현재 운이 좋지 않습니다.

내 코드는 지금까지처럼 다소 같습니다

SELECT CASE 
WHEN date > '2013' 
     THEN element NOT IN ('e1', 'e2', 'e3') --exclude 3 elements 
     WHEN date > '2012' AND date <= '2013' 
     THEN element NOT IN ('e2', 'e3') --exclude 2 elements 
     WHEN date > '2011' AND date <= '2012' 
     THEN element NOT IN ('e3') --exclude 1 element 
     WHEN date <= '2011' 
     THEN element -- no elements excluded 
     END 
FROM elementTable 

이 의사 코드입니다. sql에서 제공 한 오류는 'NOT syntax on incorrect'입니다. 나는 왜 그런지 완전히 모르겠지만 내 NOT IN 선언을 좋아하지 않는 것 같습니다.

어떤 종류의 팁, 힌트 또는 도움을 환영합니다.

미리 감사드립니다.

+0

사용하고있는 SQL 대신 WHERE 섹션 조건을 이동하려고 CASE를 사용 ? MSSQL 또는 mysql – AJP

답변

0

시도해보십시오.

SELECT CASE 
    WHEN [DATE] > '2013' AND element NOT IN ('e1', 'e2', 'e3') 
    THEN element 
    WHEN date > '2012' AND date <= '2013' AND element NOT IN ('e2', 'e3') --exclude 2 elements 
    THEN element 
    WHEN date > '2011' AND date <= '2012' AND element NOT IN ('e3') --exclude 1 element 
    THEN element 
    WHEN date <= '2011' 
    THEN element -- no elements excluded 
    ELSE 
    NULL 
    END 
FROM elementTable 
+0

이 솔루션에서 제외 된 요소에 대해 여전히 NULL을 얻을 수 있습니다. – Chorel

+0

사실. 그/그녀는 자신이하고 싶은 일에 대해 다른 섹션을 정의해야합니다. 의사 코드는 다른 것에 대해서는 언급하지 않으므로 NULL을 넣습니다. – AJP

0

하기 문이 예상되는 동안 CASETHEN 절에서 식을 추가하려고합니다.

SELECT element 
FROM elementTable 
WHERE (date > '2013' AND element NOT IN ('e1', 'e2', 'e3')) 
OR (date > '2012' AND date <= '2013' AND element NOT IN ('e2', 'e3')) 
OR (date > '2011' AND date <= '2012' AND element NOT IN ('e3')) 
OR date <= '2011'