J'ai besoin d'écrire une instruction de mise à jour sql sans répéter le paramètre sur la partie WHEN de la requête, la requête ci-dessous fonctionne bien mais je voudrais regrouper les paramètres associés, voici à quoi ressemble la requête actuelle
UPDATE [dbo].[VIPCO_UserSTCRelation]
SET [UserAccessId] = CASE [STC_Code]
WHEN '841900' THEN 21
WHEN '841300' THEN 9
WHEN '841400' THEN 21
WHEN '841305' THEN 21
WHEN '846000' THEN 38
WHEN '841002' THEN 38
WHEN '841000' THEN 40
WHEN '841005' THEN 40
WHEN '841004' THEN 40
END
par exemple, je voudrais utiliser un IN pour regrouper tous les STC appartenant à 40 ensemble, j'ai essayé la partie ci-dessous, mais pas de joie
WHEN IN ( '841000', '841005', '841004') PUIS 40
3 Réponses :
CASE
WHEN [STC_Code] IN ('841000','841005','841004') THEN 40
Vous pouvez déplacer les conditions du cas vers la quand partie de l'expression:
UPDATE [dbo].[VIPCO_UserSTCRelation]
SET [UserAccessId] = CASE
WHEN [STC_Code] = '841300' THEN 9
WHEN [STC_Code] IN ('841900', '841400', '841305') THEN 21
WHEN [STC_Code] IN ('846000', '841002') THEN 38
WHEN [STC_Code] IN ('841000', '841005', '841004') THEN 40
END
Cher Monsieur, Pourquoi ne regroupez-vous pas la valeur 21 en un seul groupe?
@Anonymous: ah oui vous avez raison, j'ai modifié ma réponse en conséquence. Merci.
Vous pouvez y parvenir de cette manière
UPDATE [dbo].[VIPCO_UserSTCRelation]
SET [UserAccessId] = CASE
WHEN [STC_Code] IN ('841900', '841400', '841305') THEN 21
WHEN [STC_Code] = '841300' THEN 9
WHEN [STC_Code] IN ('846000', '841002') THEN 38
WHEN [STC_Code] IN ('841000', '841005', '841004') THEN 40
END
Est-ce que cela répond à votre question? Faites-moi savoir si vous avez besoin d'aide @Ronny Mahlangu