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 36 37 38 39 40 41 42 43 44 45 46
| create table TA
( TA_jour smallint primary key)
;
insert into TA(TA_jour)
values (01), (02), (03), (04), (05)
, (06), (07), (08), (09), (10)
, (11), (12), (13), (14), (15)
, (16), (17), (18), (19), (20)
;
create table TB
( TB_point smallint not null
, TB_nbj smallint not null
, TB_cum decimal(5,2) not null
)
;
insert into TB
(TB_point, TB_nbj, TB_cum)
values
(1, 02, 01.0)
, (1, 04, 04.5)
, (1, 10, 35.7)
, (1, 18, 15.0)
, (1, 20, 10.1)
, (2, 02, 14.0)
, (2, 08, 22.0)
, (2, 10, 03.0)
, (2, 18, 08.5)
, (2, 20, 09.0)
;
with TX(C1, C2, C3, C4) as
(select TB.TB_point
, TB.TB_nbj
, lag(TB.TB_nbj, 1, 0)
over(partition by TB.TB_point
order by TB.TB_nbj)
, TB_cum
from TB
)
select C1 as point
, TA_jour as jour
, C4 as qte
from TA
left join TX
on TA_jour <= C2
and TA_jour > C3
order by point, jour |
Partager