Bonjour à tous.

Le query que je dois réussir à faire est théoriquement simple à comprendre mais je pense assez difficile à créer.

J'ai la table suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
CREATE TABLE "TEST_TABLE"
(
	"TID"           NUMBER(8),
	"TIMESTAMP"     DATE,
	"AVAILABILTY"   VARCHAR2(1) NOT NULL
);
Avec les données suivantes:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Insert into TEST_TABLE (TID,TIMESTAMP,AVAILABILTY) values ( 1 ,TO_DATE('29/08/2011 10:01','DD/MM/YYYY HH24:MI'), 'Y');
Insert into TEST_TABLE (TID,TIMESTAMP,AVAILABILTY) values ( 1 ,TO_DATE('29/08/2011 10:02','DD/MM/YYYY HH24:MI'), 'N');
Insert into TEST_TABLE (TID,TIMESTAMP,AVAILABILTY) values ( 1 ,TO_DATE('29/08/2011 10:04','DD/MM/YYYY HH24:MI'), 'Y');
Insert into TEST_TABLE (TID,TIMESTAMP,AVAILABILTY) values ( 1 ,TO_DATE('29/08/2011 10:06','DD/MM/YYYY HH24:MI'), 'N');
Insert into TEST_TABLE (TID,TIMESTAMP,AVAILABILTY) values ( 1 ,TO_DATE('29/08/2011 10:07','DD/MM/YYYY HH24:MI'), 'Y');
Insert into TEST_TABLE (TID,TIMESTAMP,AVAILABILTY) values ( 1 ,TO_DATE('29/08/2011 10:08','DD/MM/YYYY HH24:MI'), 'N');
 
Insert into TEST_TABLE (TID,TIMESTAMP,AVAILABILTY) values ( 2 ,TO_DATE('29/08/2011 10:01','DD/MM/YYYY HH24:MI'), 'N');
Insert into TEST_TABLE (TID,TIMESTAMP,AVAILABILTY) values ( 2 ,TO_DATE('29/08/2011 10:02','DD/MM/YYYY HH24:MI'), 'Y');
Insert into TEST_TABLE (TID,TIMESTAMP,AVAILABILTY) values ( 2 ,TO_DATE('29/08/2011 10:04','DD/MM/YYYY HH24:MI'), 'N');
Insert into TEST_TABLE (TID,TIMESTAMP,AVAILABILTY) values ( 2 ,TO_DATE('29/08/2011 10:06','DD/MM/YYYY HH24:MI'), 'Y');
Insert into TEST_TABLE (TID,TIMESTAMP,AVAILABILTY) values ( 2 ,TO_DATE('29/08/2011 10:07','DD/MM/YYYY HH24:MI'), 'N');
Insert into TEST_TABLE (TID,TIMESTAMP,AVAILABILTY) values ( 2 ,TO_DATE('29/08/2011 10:09','DD/MM/YYYY HH24:MI'), 'Y');
Mon but est de connaitre pour chaque TID différent la dernière valeur d'AVAILABILITY par tranche de 5 min.

Bref dans l'exemple ci-dessus, la réponse devrait donner pour le TID 1:
- de 10h00 à 10h05 => Y (venant du record de 10h04)
- de 10h05 à 10h10 => N (venant du record de 10h08)
Et pour le TID 2:
- de 10h00 à 10h05 => N (venant du record de 10h04)
- de 10h05 à 10h10 => Y (venant du record de 10h09)


Alors je suis parvenu à faire le group by par 5 min via cette source mais pour la suite je sèche...

Voici la query:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
select 
	ceil((TIMESTAMP-date '-4712-01-01')*288)/288+date '-4712-01-01',tid
from TEST_TABLE
group by 
  ceil((TIMESTAMP-date '-4712-01-01')*288)/288+date '-4712-01-01', tid;
Seulement maintenant ce que je veux obtenir c'est l'AVAILABILITY de ce dernier record pour la période X et le TID Y.

Pouvez-vous m'aider?