
SELECT "PRODUCT",
"LOCATION",
"QTY",
IFNULL( ADD_MONTHS( LAG("DATE") OVER(PARTITION BY "PRODUCT","LOCATION" ORDER BY "DATE") , 1), "DATE") AS "FROM_DATE",
"DATE" AS "TO_DATE"
FROM "SCHEMA"."BASE_TABLE"
WHERE "QTY" IS NOT NULL
ORDER BY "DATE";
SELECT
"GENERATED_PERIOD_START" AS "DATE"
FROM
SERIES_GENERATE_DATE('INTERVAL 1 MONTH', '2021-01-01', '2022-01-01') TIME_SERIES;
SELECT
"PRODUCT",
"LOCATION",
"QTY" ,
"GENERATED_PERIOD_START" AS "DATE"
FROM SERIES_GENERATE_DATE('INTERVAL 1 MONTH','2010-01-01','2050-01-01') TIME_SERIES JOIN (
SELECT
"PRODUCT",
"LOCATION",
"QTY",
IFNULL( ADD_MONTHS( LAG("DATE") OVER(PARTITION BY "PRODUCT","LOCATION" ORDER BY "DATE") , 1), "DATE") AS "FROM_DATE",
"DATE" AS "TO_DATE"
FROM "SCHEMA"."BASE_TABLE"
WHERE "QTY" IS NOT NULL
ORDER BY "DATE" ) TAB ON TIME_SERIES."GENERATED_PERIOD_START" BETWEEN TAB."FROM_DATE" AND TAB."TO_DATE"
;
FUNCTION "XXXX"."YYYYY::TF_LOOKING_FORWARD" ( )
RETURNS TABLE (
"PRODUCT" NVARCHAR(18),
"LOCATION" NVARCHAR(4),
"QTY" DECIMAL(15,6),
"DATE" NVARCHAR(10)
)
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER AS
BEGIN
/*****************************
Write your function logic
*****************************/
var_out = SELECT
"PRODUCT",
"LOCATION",
"QTY" ,
"GENERATED_PERIOD_START" AS "DATE"
FROM SERIES_GENERATE_DATE('INTERVAL 1 MONTH','2010-01-01','2050-01-01') TIME_SERIES JOIN (
SELECT
"PRODUCT",
"LOCATION",
"QTY",
IFNULL( ADD_MONTHS( LAG("DATE") OVER(PARTITION BY "PRODUCT","LOCATION" ORDER BY "DATE") , 1), "DATE") AS "FROM_DATE",
"DATE" AS "TO_DATE"
FROM "SCHEMA"."BASE_TABLE"
WHERE "QTY" IS NOT NULL
ORDER BY "DATE" ) TAB ON TIME_SERIES."GENERATED_PERIOD_START" BETWEEN TAB."FROM_DATE" AND TAB."TO_DATE"
;
return :var_out;
END;
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
8 | |
7 | |
7 | |
6 | |
5 | |
5 | |
5 | |
5 | |
5 | |
4 |