2009-02-24 6 views
3
DECLARE @TestVal int 
SET @TestVal = 5 

SELECT 
    CASE 
     WHEN @TestVal <=3 THEN 'Top 3' 
     ELSE 'Other' 
    END 

Я видел этот пример кода в Интернете, но я не мог найти пример, где не было никакого выражения, и это было больше, чем один, когда, так что мне интересно, если такого рода вещи в порядке:Несколько WHEN внутри без выражений CASE в SQL?

DECLARE @TestVal int 
SET @TestVal = 5 

SELECT 
    CASE 
     WHEN @TestVal <=3 THEN 'Top 3' 
       WHEN (select ...) = 1 THEN 'Other Value' 
       WHEN (select ...) = 2 THEN 'Other Value 2' 
     ELSE 'Other' 
    END 

Или мне нужно сказать CASE КОГДА для каждой строки?

ответ

5

Case принимает следующий вид

CASE WHEN Condition THEN Result 
    WHEN Condition2 THEN Result2 
ELSE Default 
END 

Редактировать

это предполагает, что с помощью Microsoft SQL Server другой СУБД может отличаться

7

Да, это хорошо, но я бы выстраиваться «КОГДА «вертикально и объясните это примерно следующим образом:

SELECT 
    CASE 
     WHEN @TestVal <=3 THEN 'Top 3' 
     WHEN @TestVal <=10 THEN 'Top 10' 
     WHEN @TestVAl <=25 THEN 'Top 25' 
     ELSE 'Other' 
    END 

Форматирование может быть просто ошибкой уценки, но (select...) в вашем примере осложняет то, что должно быть более простым фрагментом.

0
SELECT 
     CASE 
      WHEN @TestVal <=3 THEN 'Top 3' 
      WHEN @TestVal <=10 THEN 'Top 10' 
      WHEN @TestVAl <=25 THEN 'Top 25' 
      ELSE 'Other' 
     END 

В отношении гнездовых заявлений случае это может быть сделано, а также (вплоть до 10 гнездовые заявления случае подпускать SQL)

http://msdn.microsoft.com/en-us/library/ms181765.aspx