我正在开发SAP HANA,但我无法弄清楚如何获得预期的输出。 让我对获得输出有所了解。我正在处理一个过程,我的工作是将数据插入到我成功插入的特定表中,但数据的方式不正确。 我的输出中有3列名为: - report_date,report_week,week_end。 如果假设我从2010-01-01开始我的数据,那么周末应该从2010-01-06开始。并且通过这种方式,我希望我的数据从2010年到2030年。它应该在report_date中显示每周开始,并在week_end中显示每周结束。 report_week的作用是显示当前正在进行的周。 我的错误输出: - enter image description here
我的程序在下面发布: -
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
非常感谢任何帮助。
答案 0 :(得分:0)
我认为问题在于:
周(add_days(generated_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语句的join子句的组中。