FUNCTION "ZSCHEMA"."ZTF_DERIVED_QTR" ( )
RETURNS TABLE
(
DOC_TYPE NVARCHAR(5),
DOC_NUMBER NVARCHAR(10),
DOC_ITEM NVARCHAR(4),
DOC_LINE_TEXT NVARCHAR(5000),
DOC_QTR_FORMAT NVARCHAR(10),
DOC_QTR_VALUE NVARCHAR(10),
DERIVED_QTR_VALUE NVARCHAR(10)
)
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER AS
BEGIN
RETURN
SELECT DOC_TYPE,DOC_NUMBER,DOC_ITEM,
--This is the field which contains the Quarter Format entered by the user
DOC_LINE_TEXT,
--Identify the Quarter Format/Pattern entered by the user on a given line and store it in DOC_QTR_FORMAT column
case
when DOC_LINE_TEXT LIKE_REGEXPR 'Q[1-4]FY[1-2][0-9]' then 'QNFFYY' --eg:Q1FY21
when DOC_LINE_TEXT LIKE_REGEXPR '[1-4]FY[1-2][0-9]' then 'NFFYY' --eg:1FY21
when DOC_LINE_TEXT LIKE_REGEXPR 'Q[1-4].[1-2][0-9]' then 'QNSYY' --eg:Q1'21
when DOC_LINE_TEXT LIKE_REGEXPR '[1-2][0-9].Q[1-4]' then 'YYSQN' --eg:21'Q1
when DOC_LINE_TEXT LIKE_REGEXPR '[1-2][0-9]Q[1-4]' then 'YYQN' --eg:21Q1
when DOC_LINE_TEXT LIKE_REGEXPR 'Q[1-4][1-2][0-9]' then 'QNYY' --eg:Q121
when DOC_LINE_TEXT LIKE_REGEXPR '[1-4]Q[1-2][0-9]' then 'NQYY' --eg:1Q21
end as DOC_QTR_FORMAT,
--Locate the Quarter Format/Pattern and extract this Format/Pattern in DOC_QTR_VALUE column
case
when LOCATE_REGEXPR('Q[1-4]FY[1-2][0-9]' in DOC_LINE_TEXT) > 1 then SUBSTR_REGEXPR('Q[1-4]FY[1-2][0-9]' in DOC_LINE_TEXT)
when LOCATE_REGEXPR('[1-4]FY[1-2][0-9]' in DOC_LINE_TEXT) > 1 then SUBSTR_REGEXPR('[1-4]FY[1-2][0-9]' in DOC_LINE_TEXT)
when LOCATE_REGEXPR('Q[1-4].[1-2][0-9]' in DOC_LINE_TEXT) > 1 then SUBSTR_REGEXPR('Q[1-4].[1-2][0-9]' in DOC_LINE_TEXT)
when LOCATE_REGEXPR('[1-2][0-9].Q[1-4]' in DOC_LINE_TEXT) > 1 then SUBSTR_REGEXPR('[1-2][0-9].Q[1-4]' in DOC_LINE_TEXT)
when LOCATE_REGEXPR('[1-2][0-9]Q[1-4]' in DOC_LINE_TEXT) > 1 then SUBSTR_REGEXPR('[1-2][0-9]Q[1-4]' in DOC_LINE_TEXT)
when LOCATE_REGEXPR('Q[1-4][1-2][0-9]' in DOC_LINE_TEXT) > 1 then SUBSTR_REGEXPR('Q[1-4][1-2][0-9]' in DOC_LINE_TEXT)
when LOCATE_REGEXPR('[1-4]Q[1-2][0-9]' in DOC_LINE_TEXT) > 1 then SUBSTR_REGEXPR('[1-4]Q[1-2][0-9]' in DOC_LINE_TEXT)
end as DOC_QTR_VALUE,
--Identify the Quarter Format/Pattern and Extract the Quarter Format in one Standard Format YYQN eg: 21Q1
case
when DOC_LINE_TEXT LIKE_REGEXPR 'Q[1-4]FY[1-2][0-9]' then substr(SUBSTR_REGEXPR('Q[1-4]FY[1-2][0-9]' in DOC_LINE_TEXT),5,2)||substr(SUBSTR_REGEXPR('Q[1-4]FY[1-2][0-9]' in DOC_LINE_TEXT),1,2)
when DOC_LINE_TEXT LIKE_REGEXPR '[1-4]FY[1-2][0-9]' then substr(SUBSTR_REGEXPR('[1-4]FY[1-2][0-9]' in DOC_LINE_TEXT),4,2)||'Q'||substr(SUBSTR_REGEXPR('[1-4]FY[1-2][0-9]' in DOC_LINE_TEXT),1,1)
when DOC_LINE_TEXT LIKE_REGEXPR 'Q[1-4].[1-2][0-9]' then substr(SUBSTR_REGEXPR('Q[1-4].[1-2][0-9]' in DOC_LINE_TEXT),4,2)||substr(SUBSTR_REGEXPR('Q[1-4].[1-2][0-9]' in DOC_LINE_TEXT),1,2)
when DOC_LINE_TEXT LIKE_REGEXPR '[1-2][0-9].Q[1-4]' then substr(SUBSTR_REGEXPR('[1-2][0-9].Q[1-4]' in DOC_LINE_TEXT),1,2)||substr(SUBSTR_REGEXPR('[1-2][0-9].Q[1-4]' in DOC_LINE_TEXT),4,2)
when DOC_LINE_TEXT LIKE_REGEXPR '[1-2][0-9]Q[1-4]' then SUBSTR_REGEXPR('[1-2][0-9]Q[1-4]' in DOC_LINE_TEXT)
when DOC_LINE_TEXT LIKE_REGEXPR 'Q[1-4][1-2][0-9]' then substr(SUBSTR_REGEXPR('Q[1-4][1-2][0-9]' in DOC_LINE_TEXT),3,2)||substr(SUBSTR_REGEXPR('Q[1-4][1-2][0-9]' in DOC_LINE_TEXT),1,2)
when DOC_LINE_TEXT LIKE_REGEXPR '[1-4]Q[1-2][0-9]' then substr(SUBSTR_REGEXPR('[1-4]Q[1-2][0-9]' in DOC_LINE_TEXT),3,2)||'Q'||substr(SUBSTR_REGEXPR('[1-4]Q[1-2][0-9]' in DOC_LINE_TEXT),1,1)
end as DERIVED_QTR_VALUE
FROM
(
SELECT 'PR' AS DOC_TYPE,PR_NUMBER AS DOC_NUMBER,PR_ITEM AS DOC_ITEM,DESCRIPTION AS DOC_LINE_TEXT
FROM ZSCHEMA.PR_LINES
);
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 |
---|---|
11 | |
9 | |
7 | |
6 | |
4 | |
4 | |
3 | |
3 | |
3 | |
3 |