Не получается вывод, как ожидалось

Я работаю над SAP HANA и не могу понять, как получить ожидаемый результат. Позвольте мне пролить свет на получение результата. Я работаю над процедурой, и моя работа состоит в том, чтобы вставить данные в эту конкретную таблицу, которую я успешно вставляю, но данные не корректны. У меня есть 3 столбца в моем выводе с именем:- report_date, report_week, week_end. Если предположить, что я начинаю свои данные с 2010-01-01, конец недели должен начинаться с 2010-01-06. И таким образом я хочу, чтобы мои данные были получены с 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

Любая помощь очень ценится.

1 ответ

Я думаю, что проблема здесь:

week (add_days (generate_period_start, 2)) вернет номер недели в течение года, поэтому он всегда будет между 1 и 52. Поскольку неделя N будет происходить в 2010, 2011,...,2017 году, максимальное значение (report_date) всегда будет быть в прошлом году это происходит (так или 2016 или 2017).

TT_WEEK_END = выбрать report_week, max(report_date) в качестве week_end из:TT_SERIES group by report_week;

Таким образом, вы должны извлечь год из отчетной даты и включить его в группу с помощью выбора TT_WEEK_END, а также в предложении соединения, используемом для оператора INSERT.

Другие вопросы по тегам