У меня очень указанная проблема 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;
Моя цель - создать представление, которое показывает значения скидок для каждого возможного дня на основе самого последнего значения. Чтобы присоединить его к более сложным представлениям отчетов о продажах, оно должно быть в форме представления расчетов по сценарию.
Ожидаемый результат - присоединиться к нему в БП и дату документа:
...
'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;
..