Bonjour,
J'ai encore un souci avec une requête qui va servir à la génération d'un rapport (MS Report builder).
Les parties SELECT et FROM sont OK, j'ai les bons noms de tables et les colonnes correspondant aux informations que je dois récupérer.
Le point qui m'ennuie est une des clauses dans le WHERE.
J'ai un des paramètres en entrée, que j'ai appelé @TypeTravail, qui pourra prendre une (seule et unique) valeur parmi ces 3 : Routage, Autres, Tous.
Dans le cas où @TypeTravail est Routage, je dois vérifier la condition B1.ResourceType IN ('RO', 'RP', 'RU');
Si @TypeTravail est Autres, cette fois je dois vérifier B1.ResourceType NOT IN ('RO', 'RP', 'RU');
Et si @TypeTravail est Tous, je n'ai pas besoin de filtrer B1.ResourceType, donc je pensais juste vérifier une clause B1.ResourceType <> '' pour contrôler que la colonne ne soit pas vide (l'ERP ne permet pas d'avoir une valeur vide pour cette colonne).
Mon code actuel est rédigé de cette façon :
Mais SQL Server Management Studio me reproche une syntaxe incorrecte : Incorrect syntax near the keyword 'IN'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 AND (CASE WHEN @TypeTravail = 'Routage' THEN B1. ResourceType IN ('RO', 'RP', 'RU') ELSE WHEN @TypeTravail = 'Autres' THEN B1. ResourceType NOT IN ('RO', 'RP', 'RU') ELSE B1.ResourceType <> '' END)
J'ai fait un 2eme essai pour retirer la partie "IN" :
Réponse de SSMS : Incorrect syntax near '='
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 AND (CASE WHEN @TypeTravail = 'Routage' THEN (B1. ResourceType = 'RO'OR B1.ResourceType = 'RP' OR B1.ResourceType = 'RU') ELSE WHEN @TypeTravail = 'Autres' THEN (B1.ResourceType <> 'RO' AND B1.ResourceType <> 'RP'AND B1.ResourceType <> 'RU') ELSE B1.ResourceType <> '' END)
Dans les deux cas, la ligne concernée est celle où mon CASE commence.
Quelle méthode pourrais-je utiliser pour pouvoir vérifier ces conditions?
Merci d'avance pour vos lumières![]()
Partager