2012-04-27 2 views
0

case 문을 실행할 때 null 값을 원하지만 반면에 열에 null 값을 반환하는 case 문이 있습니다.Case 문이 null 값을 반환하지 않아야합니다.

SELECT ABC 
(
CASE 
WHEN 
condition 
THEN 1 
WHEN 
condition2 
THEN 2 
END 
) AS column_name FROM tablename; 

은 COLUMN_NAME는

그래서 내가 오류 '잘못된 식별자'를 얻을

SELECT ABC 
(
CASE 
WHEN 
condition 
THEN 1 
WHEN 
condition2 
THEN 2 
else 3 
END 
) AS column_name FROM tablename where column_name <>3; 

에 쿼리를 변경뿐만 아니라 null 값을 반환합니다.

이 문제에 대한 의견이 있으십니까?

+1

ABC 무엇입니까? 당신이 만든 함수? – Thilo

+0

ABC : 열 이름 – user1208862

+0

그런 다음 쉼표가 누락되었습니다. – Thilo

답변

2

당신은 (ABC가 열이 있다고 가정) ABC 후 쉼표 누락 : 또한 정말 필요하지, 그 괄호를 제거 할 수 있습니다

SELECT ABC ,       --<---- comma added here 
    (
    CASE 
    WHEN 
     condition 
    THEN 1 
    WHEN 
     condition2 
    THEN 2 
    ELSE 3 
    END 
) AS column_name 
FROM tablename; 

.


WHERE column_name <> 3을 추가했는지 명확하지 않습니다. 귀하의 조정 된 CASENULL3으로 바꿨습니다. 그 행을 보여 주겠습니까,하지 않으시겠습니까? 그렇다면 위와 같이 쿼리를 유지하십시오. 그렇지 않다면, 당신은이를 사용할 수 있습니다

SELECT 
    ABC , 
    CASE 
    WHEN 
     condition 
    THEN 1 
    WHEN 
     condition2 
    THEN 2 
    ELSE 3 
    END AS column_name 
FROM tablename 
WHERE (condition) OR (condition2) ; 

또는 (즉 논리에 더 가까운) :

SELECT * 
FROM 
    (SELECT 
     ABC , 
     CASE 
     WHEN 
      condition 
     THEN 1 
     WHEN 
      condition2 
     THEN 2 
     ELSE 3 
     END AS column_name 
    FROM tablename 
) AS tmp 
WHERE column_name <> 3 ; 
+0

확실합니다 .. 그럴 수 있습니다 .. – user1208862

+0

그것은 일했습니다 ... Thanksssssss – user1208862

1

NVL(something, 0)을 사용할 수 있으며 somethingNULL을 생성하면 0이 대신 생성됩니다.

+0

1 또는 2가없는 행을 원하지 않습니다. 1 또는 2 만있는 행만 가져올 수 있습니까? – user1208862

+0

WHERE 절은 다음과 같습니다. – StilesCrisis

관련 문제