Bonjour à tous,
Après avoir essayé de nombreuses méthodes et syntaxes différentes je n'arrive pas résoudre mon problème, c'est pour cette raison que je m'adresse à vous.
Voici le code de ma requête :
Normalement, cette requête doit fonctionner telle quelle car nous possédons une relation 1-1. Cependant, comme il y a eu des erreurs de saisies, il peut y avoir plusieurs résultats qui sont retournés par la sous-requête. Cependant, je ne souhaite pas faire un TOP 1. Ce que je souhaite faire, c'est une requête qui ferait la chose suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 UPDATE art SET [Code rayon] = (SELECT CASE WHEN [Type référence externe] = 1 THEN [Référence externe] ELSE CASE WHEN [Type référence externe] = 13 THEN [Référence externe] ELSE CASE WHEN [Type référence externe] = 14 THEN [Référence externe] ELSE 'Non renseigné' END END END FROM [BDD].[Référence externe article] as rea WHERE rea.[N° article] = art.[N°] and rea.Company = art.Company) FROM [BDD].[Article] as art
Si la sous-requête retourne plusieurs résultats, alors je modifie [Code rayon] en insérant la chaîne de caractère "Plusieurs résultats possibles", sinon (donc si la sous requête retourne un seul résultat) appliquer le traitement normal présent ci-dessus.
Comme déjà dit, j'ai essayé avec des count, des @@rowcount... mais j'ai pas réussi à obtenir le résultat voulu.
Je vous remercie d'avance pour votre aide
PS : Le SGBD utilisé est SQL Server 2008 R2.
Vivien
Partager