Teradata SQL扩展+累积

Teradata SQL扩展+累积,sql,teradata,Sql,Teradata,我有登机资料,随着时间的推移计算身份证。我已经扩展了数据,但我还需要积累 我有: ONBOARDING_DATE ONBOARDED ONBOARDED_EXPANDED 12/06/2018 13/06/2018 14/06/2018 2 2 15/06/2018 2 17/06/2018

我有登机资料,随着时间的推移计算身份证。我已经扩展了数据,但我还需要积累

我有:

ONBOARDING_DATE ONBOARDED ONBOARDED_EXPANDED
12/06/2018                          
13/06/2018                          
14/06/2018            2            2
15/06/2018                         2
17/06/2018                         2
18/06/2018            5            5
19/06/2018                         5
20/06/2018                         5
我需要它的积累,因为更多的ID正在板上,但无法找到正确的功能,将与扩展相结合

ONBOARDING_DATE ONBOARDED ONBOARDED_EXPANDED_ACCUMULATED
12/06/2018                        
13/06/2018                        
14/06/2018            2            2
15/06/2018                         2
17/06/2018                         2
18/06/2018            5            7
19/06/2018                         7
20/06/2018                         7
我的剧本

SELECT 

a.ONBOARDING_DATES
, b.ONBOARDED
, SUM(ONBOARDED) OVER ( PARTITION BY 1
                    ORDER BY ONBOARDING_DATE ASC
                    RESET WHEN ONBOARDED<>0 ) AS ONBOARDED_EXPANDED

FROM

        (
        SELECT 

        CAST(CALENDAR_DATE AS DATE) AS ONBOARDING_DATES FROM 
SYS_CALENDAR.CALENDAR

        WHERE ONBOARDING_DATES BETWEEN ADD_MONTHS(CURRENT_DATE, - 9)  AND ADD_MONTHS(CURRENT_DATE, + 9)

        ) a

LEFT JOIN
    (

            SELECT DISTINCT

            COUNT(ID) AS ONBOARDED
            , WAVE_DATE

            FROM ENV0.R_ONBOARDING

            WHERE WAVE_DATE IS NOT NULL

            GROUP BY WAVE_DATE

    ) b

    ON a.ONBOARDING_DATS = b.WAVE_DATE

    ORDER BY a.ONBOARDING_DATE

谢谢您的帮助。

您似乎只想要一笔累计金额:

select ONBOARDING_DATE, ONBOARDED,
       sum(onboarded) over (order by onboarding_date rows between unbounded preceding and current row) as ONBOARDED_EXPANDED
from t;

您似乎只想要一个累积的总和:

select ONBOARDING_DATE, ONBOARDED,
       sum(onboarded) over (order by onboarding_date rows between unbounded preceding and current row) as ONBOARDED_EXPANDED
from t;
您的重置时间可以使用LAST_值加上IGNORE NULLS重写,这将导致解释中的一个统计步骤而不是两个。如果您想计算已加载的扩展和已加载的扩展累积,您也可以在一个步骤中组合它们:

SELECT 
   a.ONBOARDING_DATES
   ,b.ONBOARDED
   ,SUM(ONBOARDED) 
    OVER (ORDER BY ONBOARDING_DATE ASC
          ROWS UNBOUNDED PRECEDIND) AS ONBOARDED_EXPANDED
   ,LAST_VALUE(ONBOARDED IGNORE NULLS) 
    OVER (ORDER BY ONBOARDING_DATE ASC
          ROWS UNBOUNDED PRECEDIND) AS ONBOARDED_EXPANDED_ACCUMULATE
相同的分区,相同的顺序将这两个计算组合成一个步骤。

可以使用最后一个值加上忽略空值重写重置时间,这将导致解释中的一个统计步骤而不是两个。如果您想计算已加载的扩展和已加载的扩展累积,您也可以在一个步骤中组合它们:

SELECT 
   a.ONBOARDING_DATES
   ,b.ONBOARDED
   ,SUM(ONBOARDED) 
    OVER (ORDER BY ONBOARDING_DATE ASC
          ROWS UNBOUNDED PRECEDIND) AS ONBOARDED_EXPANDED
   ,LAST_VALUE(ONBOARDED IGNORE NULLS) 
    OVER (ORDER BY ONBOARDING_DATE ASC
          ROWS UNBOUNDED PRECEDIND) AS ONBOARDED_EXPANDED_ACCUMULATE

相同的分区、相同的顺序将这两个计算合并到一个步骤中。

已解决!谢谢,解决了!谢谢