Bonjour,

Je suis nouvelle sur le site et un peu rouillée en SQL
Mon besoin est qu'il faudrait sur la liste de valeur ci-dessous, que je récupère uniquement pour cet objet les -10derniers mois.
Pour cela il faut que je me base sur la date la plus récente de mon objet (et non pas en me basant sur le sysdate, initialement prévus pour le ADD_MONTHS) et récupère les 10derniers mois.

Liste de valeur complète:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
select * from matable where champdate> add_months(sysdate),-10) and champ ='TEST1';
champ champdate
TEST1 2014-03-11-16.07.06
TEST1 2014-03-11-16.12.50
TEST1 2014-03-11-16.12.50
TEST1 2015-01-14-18.35.06
TEST1 2015-01-14-18.38.34
TEST1 2015-01-14-18.38.34
TEST1 2017-02-16-10.51.50
TEST1 2017-02-16-11.06.34
TTEST1 2017-02-16-11.06.34
Résultat souhaité:
champ champdate
----------------------
TEST1 2017-02-16-10.51.50
TEST1 2017-02-16-11.06.34
TEST1 2017-02-16-11.06.34

Requete que j'essaie de mettre en place :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
set serveroutput on
declare
	date_max date;
	begin
		select max(champdate) into date_max from matable  where champ ='TEST1'
	UNION ALL
		select champdate from matable   where champdatefrom > add_months(date_max,-10) and champ ='TEST1';
	DBMS_OUTPUT.PUT_LINE('var_max =' || date_max);
end;
/
var_max =2017-02-16-11.06.34
 
PL/SQL procedure successfully completed.
Merci pour votre aide.