Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- WITH maxDate
- AS
- (
- SELECT point, MAX(date) AS date
- FROM Income
- GROUP BY point
- ),
- minDate
- AS
- (
- SELECT point, MIN(date) AS date
- FROM Income
- GROUP BY point
- ),
- lagLead
- AS
- (
- SELECT point, LAG(date) OVER (ORDER BY date) AS lag, date, LEAD(DATE) OVER (ORDER BY date) AS lead
- FROM Income
- ),
- notNullLead
- AS
- (
- SELECT ll.point, ll.date, lead
- FROM lagLead ll
- JOIN maxDate maD ON ll.point = maD.point AND ll.date = maD.date
- WHERE ll.date != lead
- ),
- notNullLag
- AS
- (
- SELECT ll.point, ll.date, lag
- FROM lagLead ll
- JOIN minDate miD ON ll.point = miD.point AND ll.date = miD.date
- WHERE ll.date != lag
- ),
- AS
- final
- (
- SELECT miD.point, lag, miD.date AS min_date, maD.date AS max_date, lead
- FROM minDate miD
- JOIN maxDate maD ON miD.point = maD.point
- LEFT JOIN notNullLag nnla ON miD.point = nnla.point AND miD.date = nnla.date
- LEFT JOIN notNullLead nnle ON maD.point = nnle.point AND maD.date = nnle.date
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement