1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| with tab as
(
select 'Natation' Activité, to_date('2012/10/24 08:10:00','yyyy/mm/dd hh24:mi:ss') Date_debut ,'2012/10/24 10:10:00' Date_fin, 2 Priorité from dual union
select 'Judo' , to_date('2012/10/24 11:00:00','yyyy/mm/dd hh24:mi:ss') ,'2012/10/24 12:00:00', 1 from dual union
select 'Lecture' ,to_date( '2012/10/24 14:10:00','yyyy/mm/dd hh24:mi:ss') ,'2012/10/24 17:10:00', 3 from dual union
select 'Jogging' , to_date('2012/10/24 17:30:00','yyyy/mm/dd hh24:mi:ss') ,'2012/10/24 18:30:00', 4 from dual union
select 'Natation' ,to_date('2012/10/25 08:10:00','yyyy/mm/dd hh24:mi:ss') ,'2012/10/25 08:10:00', 2 from dual union
select 'Jogging' , to_date('2012/10/25 17:30:00','yyyy/mm/dd hh24:mi:ss') ,'2012/10/25 17:30:00', 4 from dual union
select 'Natation' ,to_date('2012/10/26 08:10:00','yyyy/mm/dd hh24:mi:ss') ,'2012/10/24 10:10:00' , 4 from dual union
select 'Judo' , to_date('2012/10/26 11:00:00','yyyy/mm/dd hh24:mi:ss') ,'2012/10/26 12:00:00', 2 from dual union
select 'Lecture' ,to_date( '2012/10/26 14:10:00','yyyy/mm/dd hh24:mi:ss') ,'2012/10/26 17:10:00', 1 from dual union
select 'Jogging' , to_date('2012/10/26 17:30:00','yyyy/mm/dd hh24:mi:ss') ,'2012/10/26 18:30:00', 3 from dual
)
select XX.date_debut,XX.ordre from
(select trunc(A.date_debut)date_debut,
(A.Activité||';'||A.Priorité||';'||B.Activité||';'||B.Priorité||';'||C.Activité||';'||C.Priorité||';'||D.Activité||';'||D.Priorité) ordre,length(A.Activité||';'||A.Priorité||';'||B.Activité||';'||B.Priorité||';'||C.Activité||';'||C.Priorité||';'||D.Activité||';'||D.Priorité)taille
from ((tab A left join tab B on trunc(A.date_debut)=trunc(B.date_debut) and A.Priorité<B.Priorité)
left join tab C on trunc(B.date_debut)=trunc(C.date_debut)and B.Priorité<C.Priorité)
left join tab D on trunc(C.date_debut)=trunc(D.date_debut)and C.Priorité<D.Priorité
group by trunc(A.date_debut),(A.Activité||';'||A.Priorité||';'||B.Activité||';'||B.Priorité||';'||C.Activité||';'||C.Priorité||';'||D.Activité||';'||D.Priorité),length(A.Activité||';'||A.Priorité||';'||B.Activité||';'||B.Priorité||';'||C.Activité||';'||C.Priorité||';'||D.Activité||';'||D.Priorité)
)XX
join
(select trunc(A.date_debut) date_debut,max(length(A.Activité||';'||A.Priorité||';'||B.Activité||';'||B.Priorité||';'||C.Activité||';'||C.Priorité||';'||D.Activité||';'||D.Priorité))taille
from ((tab A left join tab B on trunc(A.date_debut)=trunc(B.date_debut) and A.Priorité<B.Priorité)
left join tab C on trunc(B.date_debut)=trunc(C.date_debut)and B.Priorité<C.Priorité)
left join tab D on trunc(C.date_debut)=trunc(D.date_debut)and C.Priorité<D.Priorité
group by trunc(A.date_debut)
)YY on XX.date_debut=YY.date_debut and XX.taille=YY.taille |
Partager