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
- ),
- lagLeadAll
- AS
- (
- SELECT LAG(date) OVER (ORDER BY date, point) AS lag,
- point,
- date,
- LEAD(date) OVER (ORDER BY date, point) AS lead
- FROM Income
- ),
- leadLagDistinct
- AS
- (
- SELECT lag, point, date, lead
- FROM lagLeadAll
- WHERE date != lag OR date != lead
- ),
- minMax
- AS
- (
- SELECT mad.point, mid.date AS minDate, mad.date AS maxDate
- FROM maxDate mad
- JOIN minDate mid ON mad.point = mid.point
- ),
- almostFinal
- AS
- (
- SELECT
- mm.point,
- CASE
- WHEN lag.lag != minDate
- THEN lag.lag
- ELSE NULL
- END AS lag,
- minDate,
- maxDate,
- CASE
- WHEN lead.lead != maxDate
- THEN lead.lead
- ELSE NULL
- END AS lead
- FROM minMax mm
- LEFT JOIN leadLagDistinct lag ON mm.minDate = lag.date AND mm.point = lag.point
- LEFT JOIN leadLagDistinct lead ON mm.maxDate = lead.date AND mm.point = lead.point
- )
- SELECT *
- FROM almostFinal
- WHERE
- NOT (lag IS NULL AND lead IS NULL)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement