Bonjour,

Après de nombreuses recherches et tests infructueux, je m'adresse à vous en dernier recours :
Voici le contexte :
Base de donnée SQL Server 2016 / Microsoft SQL Server Management Studio/ Je suis un utilisateur ayant appris sur le tas (forum etc) et avançant par essais erreurs.

Voici mon problème :
J'ai 4 tables : 1 tables d'article (bc) et 3 tables de tarifs (tarifA/tarifB/tarifC) et je souhaite créé une vue avec une colonne article et une colonne tarif (PA). Le tarif à afficher dépend d'une condition dont la donnée correspondante est issue de la table article. La règle de gestion est la suivante :

Condition A : Si sref 1 = ‘ab’, ‘am’, ‘av’, ‘bm’, ‘bs’, ‘bv’, ‘cm’, ‘cs’, ‘cu’, ‘fe’, ‘fs’, ‘lb’, ‘nm’, ‘po’, ‘sg’, ‘vb, ‘vc’ afficher tarifA
Condition B : Si sref 1 = ‘bo’, ‘cd’, ‘cn’, ‘db’, ‘dm’, ‘do’, ‘nc’, ‘ni’, ‘no’, ‘pb’ afficher tarifB
Si ni A ni B alors
Condition C : Si sref2 = ‘101’, ‘150’, ‘151’, ‘152’ afficher tarifB
Condition D : Si non afficher tarifA
Condition E : Si A B C D nul afficher tarifC
Si E nul afficher 0

Et voici pour le moment la "requête" que j'ai créé pour la colonne tarif (PA) mais qui ne fonctionne pas c'est à dire un prix (PA) est cherché et affiché mais il ne respecte pas les conditions ci-dessus:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
ISNULL (isnull ( 
CASE 
WHEN dbo.bc.strtsref1 IN (‘ab’, 
                          ‘am’, 
                          ‘av’, 
                          ‘bm’, 
                          ‘bs’, 
                          ‘bv’, 
                          ‘cm’, 
                          ‘cs’, 
                          ‘cu’, 
                          ‘fe’, 
                          ‘fs’, 
                          ‘lb’, 
                          ‘nm’, 
                          ‘po’, 
                          ‘sg’, 
                          ‘vb’, 
                          ‘vc’) THEN 
  dbo.tarifA.pa 
  ELSE 
  CASE 
  WHEN dbo.bc.strtsref1 IN (‘bo’, 
                            ‘cd’, 
                            ‘cn’, 
                            ‘db’, 
                            ‘dm’, 
                            ‘do’, 
                            ‘nc’, 
                            ‘ni’, 
                            ‘no’, 
                            ‘pb’) THEN 
    dbo.tarifB.pa 
    ELSE 
    CASE 
    WHEN dbo.bc.strtsref2 IN (101’, 
                              ‘150’, 
                              ‘151’, 
                              ‘152) THEN 
      dbo.tarifB.pa 
      ELSE dbo.tarifA.pa 
    END 
  END 
END ;tarifC.pa);0)
Avec mes remerciements

PS : j'ai trouvé des topics de forums similaires mais aucun assez précis ou proche de mon cas que je puisse utiliser ou adapter à cause mes compétences limitées.

Bruno