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