/ / Instruction Fallthrough CASE de SQL - sql, sql-server, tsql

Fallthrough CASE Statement de SQL - sql, sql-server, tsql

En C # on peut écrire

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

Comment puis-je obtenir le même genre de choses dans SQL SERVER?

Je ne parle pas de la manière simple d'écrireCASE dans SQL SERVER. Je parle si je dois effectuer la même opération dans 2 cas ou plus que ce que j’ai montré dans le fragment de code C #, comment faire le même genre de choses dans SQL "s CASE?

MODIFIER:

J'ai déjà de bonnes réponses d'ici. Comment puis-je convertir ce qui suit

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]

... dans quelque chose comme:

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

En fait, j'ai besoin de cela dans une requête PIVOT. La nuit dernière, j'ai résolu le problème. Mais je ne suis pas convaincu par cette façon d'écrire. Parce qu'à chaque fois, je fais la même chose. Alors, y a-t-il une meilleure façon de présenter cela?

Réponses:

4 pour la réponse № 1

Vous pourriez être à la recherche de cela.

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

Plus d'informations sur CASE de MSDN.


2 pour la réponse № 2

SQL supporte un CASE déclaration, mais ce n'est pas la même chose que le switch déclaration dans les langages de haut niveau comme C # et Java. Dans une déclaration de commutateur, vous avez le concept de chute par où si un break instruction n'est pas rencontrée, le flux continue à la suivante case. En revanche, un SQL CASE déclaration se comporte comme un langage de haut niveau if(value==1){ ... }else if(value==2){ ... }else{ ... }.


2 pour la réponse № 3

Comme c # instruction SWITCH, SQL Server "s CASE expression Est-ce que ne pas soutenir fallthrough.

Notez l'accent sur expression - il ne doit pas être utilisé pour le contrôle du débit, utilisez ce qui est énumérés ici.


1 pour la réponse № 4

Comme ça:

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