Teradata equivalent for lead and lag function of oracle

前端 未结 1 1038
北恋
北恋 2020-12-06 03:17

I have been working ot see the equivalent function for Oracle lead and lag function.

The oracle lead would look like

LEAD(col1.date,1,ADD_MONTHS(col1         


        
相关标签:
1条回答
  • 2020-12-06 04:00

    I believe you can take the following SQL as a basis and modify it to meet your needs:

    SELECT CALENDAR_DATE
         , MAX(CALENDAR_DATE)
           OVER(PARTITION BY 1 ORDER BY CALENDAR_DATE
                ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS Lag_ --Yesterday
         , MIN(CALENDAR_DATE)
                OVER(PARTITION BY 1 ORDER BY CALENDAR_DATE
                ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) AS Lead_ --Tomorrow
    FROM SysCalendar.CALENDAR
    WHERE year_of_calendar = 2011
      AND month_of_year = 11
    

    NULL is returned when there is no record before or after and can be addressed with a COALESCE as necessary.

    EDIT In Teradata 16.00 LAG/LEAD functions were introduced.

    0 讨论(0)
提交回复
热议问题