我有非常 HANA/SQLScript 指定的问题。我需要根据带有日期间隔的表以脚本计算视图的形式为每一天创建一个历史视图吗?
我尝试使用“_SYS_BI”。“M_TIME_DIMENSION”进行每个交叉连接,并且只使用函数。
根据我的经验,交叉连接是累积和的理想选择,但不适用于显示单个值。
HANA 不允许使用列作为表函数的输入参数。
标量函数也不能在计算视图中使用。我可以激活该视图,但无法从中读取数据。即使功能独立工作正常:
业务伙伴折扣表:
CREATE COLUMN TABLE "BP_DISCOUNT" ("BP_CODE" VARCHAR(50) NOT NULL ,
"DATE" DATE L ,
"DISCOUNT" DECIMAL(21,6);
insert into "BP_DISCOUNT" values('abc','20190101','0');
insert into "BP_DISCOUNT" values('abc','20190105','5');
insert into "BP_DISCOUNT" values('abc','20190110','10');
我想用来代替的功能:
CREATE FUNCTION bp_discountF (BP_Code varchar(50), Date_D date)
RETURNS discount decimal(21,6)
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
AS
BEGIN
select "DISCOUNT" into DISCOUNT
from "BP_DISCOUNT" d
where
:BP_CODE = d."BP_CODE" and d."DATE"<= :DATE_D order by d."DATE" desc limit 1;
END;
我的目标是创建一个视图,根据最近的值显示每天的折扣值。它必须以脚本计算视图的形式加入到更复杂的销售报告视图中。
预期结果是在 BP 和文件日期加入它:
...
'abc', '20190101', 0;
'abc', '20190102', 0;
'abc', '20190103', 0;
'abc', '20190104', 0;
'abc', '20190105', 5;
'abc', '20190106', 5;
'abc', '20190107', 5;
'abc', '20190108', 5;
'abc', '20190109', 5;
'abc', '20190110', 10;
'abc', '20190111', 10;
..