2013-02-18 5 views
11

SELECT 문에서 결과가없는 경우 CASE를 사용하여 특정 문자열을 반환 할 수 있습니까?CASE를 사용하여 SELECT 문에서 결과가없는 경우

예 : 위의 내가 검색하고있는 계좌 번호 내 로그 테이블에없는 경우 다음 어떤 결과 및 메시지 '우리는 기록이없는이 없을 것이기 때문에 작동하지 않습니다

DECLARE @accountnumber AS VARCHAR(10) 

SET @accountnumber = 'account number to search' 

SELECT 
    CASE 
    WHEN account IS NOT NULL 
    THEN 'We Have Records of this Customer' 
    WHEN account IS NULL 
    THEN 'We Do Not Have Records For This Customer' 
    END AS 'result' 
FROM call_records 
WHERE account = @accountnumber 
GROUP BY account 

이 고객의 경우 '는 결코 실현되지 않습니다.
PRINT 명령으로 순수 T-SQL을 사용하여 달성하려는 작업을 수행 할 수 있지만 타사 응용 프로그램으로 작업 중이며 그 결과는 테이블 형식이어야합니다 (SELECT 문만 사용).

+0

는'call_records'의'account' 하나 개 일치하는 레코드보다 더있을 수 있습니다? 그렇다면 단일 행 결과 만 원하십니까? –

+1

@MartinSmith : 제공된 쿼리의 마지막 줄을 기록합니다 (처음 질문을 읽었을 때 놓쳤습니다). –

+0

@ MarkBannister - 좋은 지적. 그럼에도 불구하고 하나의 행을 반환합니다. –

답변

20

당신은 사용할 수 있습니다 EXISTS :

SELECT 
    CASE 
    WHEN EXISTS(
     SELECT 1 FROM call_records 
     WHERE account = @accountnumber 
    ) 
    THEN 'We Have Records of this Customer' 
    ELSE 'We Do Not Have Records For This Customer' 
    END AS 'result'; 
6

시도 :

DECLARE @accountnumber AS VARCHAR(10) 

SET @accountnumber = 'account number to search' 

SELECT 
    CASE 
    WHEN account IS NOT NULL 
    THEN 'We Have Records of this Customer' 
    WHEN account IS NULL 
    THEN 'We Do Not Have Records For This Customer' 
    END AS 'result' 
FROM (select 1 dummy) dummy 
left join call_records ON account = @accountnumber 
GROUP BY account 
관련 문제