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:
Avec mes remerciements
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)
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
Partager