0

我正在研究 SAP HANA,但我无法弄清楚如何获得预期的输出。让我对获得输出进行一些说明。我正在处理一个程序,我的工作是将数据插入到我成功插入的那个特定表中,但是数据的方式不正确。我的输出中有 3 列名为:-report_date、report_week、week_end。如果假设我从 2010 年 1 月 1 日开始我的数据,那么周末应该从 2010 年 1 月 6 日开始。通过这种方式,我想要我的数据从 2010 年到 2030 年。它应该显示每周从 report_date 开始,每个周末从 week_end 开始。report_week 的作用是显示当前是哪一周。我的错误输出:-在此处输入图像描述

我有我在下面发布的程序:-

    create procedure bhavya.zz_get_series()

    LANGUAGE SQLSCRIPT
    SQL SECURITY INVOKER 
    --DEFAULT SCHEMA <default_schema_name>

    AS

    LV_START_DATE date := '2010-01-01' ;
    LV_END_DATE date   := current_date ;
    LV_WEEK_END         NVARCHAR(10) := 'FRIDAY';
    lv_report_date  Date ;



    Begin



    TT_SERIES  =  (SELECT GENERATED_PERIOD_START AS REPORT_DATE,
                     week(add_days(generated_period_start , 2)) as 
    report_week, current_date as week_end --added ABHOOT
               FROM SERIES_GENERATE_DATE ( 'INTERVAL 1 DAY', :LV_START_DATE, 

    ADD_DAYS(coalesce(current_date,:LV_END_DATE), 1)));




    TT_WEEK_END = select report_week, max(report_date) as week_end
                  from :TT_SERIES
                  group by report_week ;



    insert into "BHAVYA"."AFS_BASE.KPI.TABLES::DB_WEEK_SERIES" 
    (REPORT_DATE,REPORT_WEEK,WEEK_END) 
    select S.report_date, w.report_week, w.week_end
              from :TT_SERIES S 
              left join :TT_WEEK_END W
              on w.report_week = s.report_week;



              end; 

              call bhavya.zz_get_series

非常感谢任何帮助。

4

1 回答 1

0

我认为问题出在这里:

week(add_days(generated_period_start , 2)) 将返回一年内的周数,因此它将始终介于 1 和 52 之间。由于第 N 周将发生在 2010、2011、...、2017 中,因此 max(report_date) 将始终在它发生的最后一年(所以是 2016 年或 2017 年)。

TT_WEEK_END = select report_week, max(report_date) as week_end from :TT_SERIES group by report_week ;

因此,您还必须从报告日期中提取年份并将其包含在 TT_WEEK_END 选择的 group by 以及用于 INSERT 语句的连接子句中。

于 2017-07-18T21:10:18.927 回答