TSQL и случай, когда с несколькими, когда? - PullRequest
6 голосов
/ 17 октября 2011

У меня есть несколько условий, и результат для них должен быть одинаковым.Я искал в сети и нашел что-то вроде этого:

CASE ProductLine
     WHEN 'R' THEN 'Road'
     WHEN 'M' THEN 'Mountain'
     WHEN 'T' THEN 'Touring'
     WHEN 'S' THEN 'Other sale items'
     ELSE 'Not for sale'
  END

Это хорошо, но не то, что мне нужно, для меня это больше похоже на R, M, T и S, все имеют одинаковый результат, и A, B,C, D например нет.Как бы я это сделал?Я не могу связаться с OR, или, по крайней мере, мне не удалось :).Может быть как то так?

CASE ProductLine
     WHEN 'R' OR 'M' OR ... THEN 'Road'
     ELSE 'Not for sale'
  END

1 Ответ

7 голосов
/ 17 октября 2011

Изменить на "искомый" CASE выражение .У вас есть «простое» выражение CASE выше

CASE
   WHEN  ProductLine IN ('R', 'M', ...) THEN 'Road'
   ELSE 'Not for sale'
END

Из ссылки MSDN выше:

Simple CASE expression: 
CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END 

Searched CASE expression:
CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END
...