/ / SQL на Fallthrough CASE Statement - sql, sql-server, tsql

SQL известие CASE - sql, sql-server, tsql

В C # можем да напишем

switch(num)
{
case 0:
case 1: // do something; break;
case 2:
............
...........
case n: // do something break;
default: //do something; break;
}

Как мога да постигна подобен вид неща в SQL SERVER?

Не говоря за простия начин на писанеСЛУЧАЙ в SQL SERVER. Аз говоря за това, ако трябва да изпълнява същия оператор в 2 или повече случаи като това, което показах в C # кодов фрагмент, как да направя подобен вид неща в SQL CASE?

РЕДАКТИРАНЕ:

Имам доста хубави отговори оттук. Как мога да конвертирам следното

SELECT CASE
WHEN [A]= num THEN "-" ELSE "" END [A],
CASE WHEN [B]= num THEN "-" ELSE "" END [B],
CASE WHEN [C]= num THEN "-" ELSE "" END [C],
CASE WHEN [D]= num THEN "-" ELSE "" END [D]

... в нещо като:

SELECT CASE WHEN [A],
CASE WHEN [B],
CASE WHEN [C],
CASE WHEN [D] = num THEN "-" ELSE "" END [A] or [B] or [C] or [D]

Всъщност имам нужда от това в PIVOT заявка. Снощи реших проблема. Но не съм убеден в този начин на писане. Защото всеки път правя същото. Има ли по-добър начин да представите това?

Отговори:

4 за отговор № 1

Може да търсите това.

SELECT
CASE
WHEN (num BETWEEN 0 AND 2) THEN "Between 0 and 2"
WHEN (num = 3) THEN "3"
ELSE "Something else"
END
...

Повече информация за CASE от MSDN.


2 за отговор № 2

SQL поддържа a CASE но това не е същото като switch изявление в езици на високо ниво като C # и Java. В изявление за превключвател имате концепцията за падане, където ако a break изявление не се среща, потокът продължава към следващия case, За разлика от това, SQL CASE изявление се държи като езика на високо ниво if(value==1){ ... }else if(value==2){ ... }else{ ... }.


2 за отговор № 3

Подобно на изявление C # SWITCH, CASE на SQL Server изразяване прави не Подкрепа падане.

Обърнете внимание на акцента върху изразяване - тя не трябва да се използва за контрол на потока, използвайте това, което е изброени тук.


1 за отговор № 4

Като този:

SELECT
CASE num
WHEN 0 THEN ...
WHEN 1 THEN ...
ELSE ...
END as SomeCol
FROM ...