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)
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 )
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é
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