2013-02-18 13 views
11

SELECT deyimimden herhangi bir sonuç çıkmazsa belirli bir dize döndürmek CASE kullanmak mümkün mü?SELECT deyiminden sonuç alınamazsa bir dize döndürmek için CASE kullanılması

Örnek: Yukarıdaki aradığım hesap numarası günlüklerimde tabloda yoksa o zaman hiçbir sonuçları ve mesaj 'Biz Kayıtları İçermesin olacağını beri çalışmıyor

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 

Bu Müşteri için asla gerçekleşmeyecek.
Bir PRINT komutuyla salt T-SQL kullanarak elde etmeye çalıştığım şeyi yapabilirim, ancak bir 3. parti uygulamasıyla çalışıyorum ve sonuçlar tablo biçiminde olmalıdır (bu nedenle sadece SELECT deyimleri).

+0

'call_records' bir' account' için bir eşleştirme kaydında birden fazla var olabilir mi? Eğer öyleyse, sadece tek bir satır sonucu istiyorsun? –

+1

@MartinSmith: Verilen sorgunun son satırına dikkat et (Ben de soruyu ilk okuduğumda kaçırdım). –

+0

@MarkBannister - İyi nokta. Varsa bile tek bir satır döndürür. –

cevap

20

kullanabilirsiniz 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

Dene:

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 
İlgili konular