2010-10-05 1 views
0

Je dois mettre à jour la table, et je ne peux pas utiliser else si dans tsql. Est-ce qu'il existe?else Si dans tsql

Status = 
(
CASE 
WHEN 
(Status in (0)) 
THEN 
0 
ELSE IF Status in (1) 
THEN 
7 
ELSE 
Status 
END 
+0

Oui, il existe - mais pas lorsque votre SQL ne marche pas de sens. Statut IN (0) ?? Qu'est-ce que vous essayez de réaliser ??? – RPM1984

+0

C'est seulement un exemple. Réel il y aura plus de statuts – user278618

Répondre

3

Le CASE WHEN syntax ne supporte plusieurs conditions:

Status = CASE WHEN Status = 0 THEN 0 
       WHEN Status = 1 THEN 7 
       ELSE Status 
     END 

Puisque vous comparez le même domaine pour l'égalité dans les deux cas, vous pouvez utiliser la notation plus courte:

Status = CASE Status WHEN 0 THEN 0 
        WHEN 1 THEN 7 
        ELSE Status 
     END 
1

Utilisez à nouveau CASE QUAND:

Status = CASE WHEN Status in (0) 
       THEN 0 
       ELSE CASE WHEN Status in (1) 
          THEN 7 
          ELSE Status 
        END 
     END 

ou

Status = CASE WHEN Status in (0) THEN 0 
       WHEN Status in (1) THEN 7 
       ELSE Status 
     END 
0

Oui, vous pouvez utiliser les instructions IF dans SQL. Cocher cette

Declare @x int 
    set @x = 29 
    if @x = 29 print 'The number is 29' 
    if @x = 30 print 'The number is 30' 
+0

Pas utile pour une instruction de mise à jour basée sur un ensemble. –

1

Vous devez utiliser la syntaxe suivante:

Status = 
    (CASE WHEN (Status in (0)) THEN 0 
      WHEN (Status in (1)) THEN 7 
      ELSE Status 
    END) 
1

essayer

Status = 
(
CASE 
WHEN 
(Status in (0)) 
THEN 
0 
WHEN Status in (1) 
THEN 
7 
ELSE 
Status 
END