Bonjour a tous,
alors voila je suis depuis ce matin 10h sur une requete a la c... qui me permet pas davancer.
Posons l'environnement dans un premier temps:
J'ai des produits (qui possedent un ID (IDPRDT) et une nature (IDNTCT))
Ces produits sont rataché a des contrats (qui pareil on un id (IDCTRT) une reference (REFCTR) et une date de cloture (DATCLO))
A une reference peut correspondre 2 contrats , la difference se fera au niveau du produit associé et de la nature.
A partir de la reference du contrat, je voudrais pouvoir récupérer l'id du produit en sachant que dans le cas de 2 contrats sous la meme reference, si la date de cloture du 1er est non nulle, j'obtiens le second (grace a idntct=3), et si les 2 sont a non null j'obtiens le 1er.
Voila la requete qui fonctionne le mieux (enfin facon de parler)
alors cette requete va bien me retourner la 1ere valeur dans le cas de 2 dates nulles de contrat ms si la 1ere est nulle alor rien n'est remonté
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT P2.IDNTCT FROM AVPDTS AS P2 INNER JOIN AVCTRT AS C2 ON C2.IDPRDT = P2.IDPRDT WHERE REFCTR = '86900070' AND P2.IDNTCT = (CASE WHEN C2.DATCLO is not null THEN 3 ELSE (SELECT IDNTCT FROM AVPDTS INNER JOIN AVCTRT ON VPDTS.IDPRDT = AVCTRT.IDPRDT WHERE REFCTR = '86900070' AND IDNTCT <> 3) END )
j'ai l'impression que le case ne se fait pas correctement car quand jessaie la requete avec des valeurs statiques a la palce du case ca passe
je vous prierais de ne pas me renvoyé vers des liens Case When pour les newbies ou autres, g fait le tour du net sans pouvoir trouver la solution.
Enfin voila
toute aide est la bienvenue, car a force de chercher et de m'arracher les cheveux , on commence par m'appeler zidane (tu me diras ete considéré comme dieu ca pa si mal, tant que c'est pas Sim
)
j'espere que vous aurez a peu pres saisi le pb (javoue que moi ossi jme suis perdu en ecrivant ce mail)
Merci
Partager