Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- with
- rawdates(date) as (select generate_series(date_a,date_b, interval '1 day')::date),
- dates(date,daycode) as (select date,(extract('month' from date)*100 + extract('day' from date))::integer as daycode from rawdates),
- daycodes_array(daycodes_array) as (select array_agg(daycode) from dates),
- matching_schedules(id_schedule,daycodes) as(
- select
- id_schedule,
- array(select unnest(calendar_array) intersect select unnest(daycodes_array))
- from
- XXXX.schedule,
- daycodes_array
- where
- calendar_array && daycodes_array and
- (
- (date_a>=date_start and date_a<date_end) or
- (date_b>=date_start and date_b<date_end) or
- (date_start>=date_a and date_start<date_b)
- )
- ),
- unnested_schedules(id_schedule,daycode) as(select id_schedule,unnest(daycodes) from matching_schedules)
- select
- id_schedule,
- id_train,
- n1,
- date+time_departure as date_departure
- from
- unnested_schedules join
- dates using(daycode) join
- XXXX.schedule using(id_schedule) join
- XXXX.train using(id_train)
- where
- date>=date_start and
- date<date_end and
- date+time_departure >= date_a and
- date+time_departure < date_b
- order by
- 1,2 asc
Advertisement
Add Comment
Please, Sign In to add comment