2010-06-29 2 views
4

아래의 SELECT CASE를 기반으로 두 개의 개의 열이 하나의 WHEN 안에 있음을 나타내고 싶습니다. 이것이 가능한가?SELECT CASE에 따라 여러 열을 선택할 수 있습니까?

아래에 주석 처리 된 두 줄은 내가 갖고 싶은 것과 같습니다. 나는 그것이 매우 간단하다는 것을 확신한다. 그대로, 구문 오류가 있습니다.

select 
    person.FirstName, 
    person.LastName, 
    CASE 
     --WHEN substatus is not null then 'HasSubstatus', null 
     --else null, 'DoesNotHaveSubstatus' 
     WHEN substatus is not null then 'HasSubstatus' 
     else null 
    end 
from Person person 
+0

함께 할 수 있을까? –

+0

mysql 태그를 삭제했습니다. – VoodooChild

+0

두 열 모두 실제로 동일한 정확한 데이터를 전달해야하는 이유가 있습니까? 어쩌면보고 엔진에 이상한 요구 사항이있을 수도 있지만, 시작하려면 저와 함께 붉은 깃발을 높이는 것 중 하나입니다. –

답변

4

하나의 사례에서이를 수행 할 수 없습니다. 사례 식은 하나의 값을 반환합니다. 두 개의 Case 표현식을 사용해야합니다.

Select person.FirstName 
    , person.LastName 
    , Case When substatus is not null Then 'HasSubstatus' End As [HasSubstatus] 
    , Case When substatus is null Then 'DoesNotHaveSubstatus' End As [DoesNotHaveSubstatus] 
From Person person 
1

수 없습니다.

동일한 조건부 논리를 2 개의 열에 적용하거나 하나의 경우에 두 개의 열을 반환해야한다는 것을 의미하는 경우 별도의 쿼리로 사용하려는 경우 case 문을 반복해야합니다. 대/소문자.

-1

당신은 당신이 모두 MySQL과 사이베이스를 태그 한 이유 if()isnull() (이 구문은 MySQL의에서 일 것이다)

select 
    person.FirstName, 
    person.LastName, 
    IF(ISNULL(substatus),'HasSubstatus', null) AS DoesHave, 
    IF(ISNULL(substatus),null,'DoesNotHaveSubstatus' ) AS DoesNotHave, 
from Person person 
+0

-1 구문 오류 : 잘못된 번호 매개 변수 'ISNULL'기능을 수행합니다 – VoodooChild

+0

@VoodooChild, 미안 해요 mysql 구문을 사용하고 있습니다. @ thomas 대답은 갈 방법입니다 .. –

+0

오,이 MySQL에서 작동하는지 몰랐어요. 나는 downvote를 제거하려했지만 답변이 편집되지 않으면 투표가 잠겨 있다고 말합니다. – VoodooChild

관련 문제