Bonjour à tous,

Tout d'abord, merci aux créateurs de ce site et au contributeurs, car à la lecture de différents sujets, il me paraît très enrichissant !
Je précise que je suis d'un niveau débutant en SQL - j'ai recherché une solution à mon problème un peu partout, mais sans résultat pour le moment...

Mon problème est le suivant :
je souhaite afficher tous les montants antérieurs à une date de situation (ex : 31/03/2017).

Il me faut systématiquement le dernier montant enregistré antérieurement au 31/03

Par ex :
A/ Si le dernier montant de la table cc est au 24/03, aucun soucis.

B/ Mais un nouveau montant est enregistré ensuite dans la table au 04/04 c'est problématique, car :
- soit j'ai le montant du 04/04 qui sort
- soit je sélectionne avec un MAX, mais là la ligne n'est plus générée (car il considère que le montant du 04/04 est hors borne de mon SELECT. )
=> Hors j'ai bien besoin systématiquement du dernier montant existant - avant le 31/03 ;

ça donne ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SELECT e.DATE, cc.MONTANT
FROM TABLE cc, TABLE e, TABLE o 
WHERE cc.CONTREPARTIE = o.CONTREPARTIE
AND   o.NUM= e.NUM
AND   o.POSTE = 'ZZZ'
AND e.DATE = 
(SELECT MAX (e2.DATE)
FROM TABLE e2
WHERE e2.NUM = o.NUM
 AND e.DATE<='31/03/2017'))

/* note : dans ce cas, il me manque tous les montants du dernier événement de mars pour lesquels un nouveau montant a été enregistré en avril.
Par ailleurs, si je mets e2.DATE<'31/03/2017' j'ai toutes les lignes avec ma date correcte (dernières dates de mars), mais les montants sont les derniers montants d'avril et non ceux correspondant à la date. */


J'espère que mon problème est clair ;
Merci par avance !