Bonjour J'ai une petit problème que je souhaiterais résoudre en sql mais je bloque depuis deux jours, j'ai le sentiment que c'est impossible à écrire en sql :

j'ai donc une table
identifiant, date_debut, date_fin, valeur1

la clef primaire de cette table est (identifiant, date_debut)

Le but est d'obtenir le recap des modif de la valeur1 avec la date de debut et la date de fin de la valeur1

exemple: table de travail :
identifiant,date_debut,date_fin,valeur1
toto,12/11/2011,12/11/2012, 300
toto,13/11/2012,15/11/2012, 350
toto,16/11/2012,15/11/2014, 350
toto,16/11/2014,15/11/2015, 350
toto,16/11/2015,17/12/2015, 400

si au fil du temps (au fil de la date de debut) la valeur1 ne régresse pas, on ne peut donc pas retomber sur une valeur1 qui existait déjà avant et ça se fait sans réèl problème pour qui connait la fonction analytique partition by :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
 
select 
table_de_travail.identifiant, 
min(table_de_travai.date_debut) over(partition by table_de_travail.identifiant,table_de_travail.valeur1) as min_date_debut ,
max(table_de_travai.date_fin) over(partition by table_de_travail.identifiant,table_de_travail.valeur1) as max_date_fin,
table_de_travail.valeur1
from table_de_travail trable_de_travail



On obtient assez facilement

toto,12/11/2011,12/11/2012, 300
toto,13/11/2012,15/11/2015, 350
toto,16/11/2015,17/12/2015, 400


Mais là où ça se corse véritablement, c'est qd on a en entree par exemple


toto,12/11/2011,12/11/2012, 300
toto,13/11/2012,15/11/2012, 350
toto,16/11/2012,15/11/2014, 350
toto,16/11/2014,15/11/2015, 350
toto,16/11/2015,17/12/2015, 400
toto,18/12/2015,12/11/2016, 300



et que l'on souhaiterais obtenir :

toto,12/11/2011,12/11/2012, 300
toto,13/11/2012,15/11/2015, 350
toto,16/11/2015,17/12/2015, 400
toto,18/12/2015,12/11/2016, 300



Car la requete que j'ai écrite va traité (toto,300) sans prendre en compte la rupture avec date de debut.
J'ai regardé à coté des clause de fenetrage.

Quelqun a il une idée?

Au pire je traiterais ce problème d'une manière séquentiel. Merci de votre lecture!