From: | Anthony Apollis <anthony(dot)apollis(at)gmail(dot)com> |
---|---|
To: | pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Check Code Correction Current Period Prior Period Movement |
Date: | 2023-11-23 14:02:22 |
Message-ID: | CAJyMCYLMaQHErd5i4_WRTcsBXYPLzQggz9qCueQs17d7arau7A@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Please assist me?
I am trying to calculate
Current Period Prior Period Movement from my data, the date columns
are:
[image: image.png]
Please check my code for any errors, code runs, i just want to make sure it
does what it's supposed to do.
-- View: model.IMETA_ZTRB_BRACS_Model_TA_BW_View
-- DROP VIEW model."IMETA_ZTRB_BRACS_Model_TA_BW_View";
CREATE OR REPLACE VIEW model."IMETA_ZTRB_BRACS_Model_TA_BW_View"
AS
SELECT t."ZTBR_TransactionCode",
t."Company_Code",
t."Posting_Period", -- This is a period within a year
t."Fiscal_Year", -- This contains years 2019 to present
t."Profit_Center",
t."Account_Number",
t."Business_Process",
t."Internal_Order",
t."Amount_in_Company_Code_Currency",
t."Company_Code_Currency",
t."BRACS_FA",
t."Expense_Type",
t."Primary_ZTBR_TransactionCode",
t."Acct_Type",
t."BRACS_Level_1",
t."BRACS_Level_2",
t."BRACS_Level_3",
t."GCoA",
t."Account_Desc",
t."EXPENSE_FLAG",
t."BRACS",
t."BRACS_DESC",
t."Roll_Up_Currency",
t."Roll_Up_Account_Description",
t."BRACS_Account",
t."BRACS_Account_Description",
t."IS_BS",
t."Classification",
t."Roll_Up_Function",
t."Region",
t."Roll_Up",
t."Entity",
t."Entity_Name",
t."Entity_Level",
t."Entity_Level_1",
t."Entity_Level_2",
t."Entity_Level_3",
t."Entity_Level_4",
t."Entity_Level_5",
t."Entity_Level_6",
t."Region_Mapping_CoCd",
t."Region_Mapping_Sub_Region",
t."Region_Mapping_Region",
t."Region_Mapping_BRACS_Entity",
t."Region_Mapping_Consul",
t."Region_Mapping_Report",
t."Region_Mapping_Region_BRACS",
t."Region_Mapping_Group",
t."Region_Mapping_Group_BRACS",
t."DIM_BRACS_Account_Description",
t."DIM_Classification",
t."DIM_Direct_Primary_Key",
t."DIM_Order",
t."SDM_BRACSFA",
t."SDM_Function",
round((t."Amount_in_Company_Code_Currency"::double precision /
curr."Conversion rate")::numeric, 2) AS "Amount in USD",
CASE
WHEN t."Fiscal_Year"::double precision = date_part('year'::text,
CURRENT_DATE) THEN t."Amount_in_Company_Code_Currency"
ELSE NULL::numeric
END AS "Current Period",
CASE
WHEN t."Fiscal_Year"::double precision = (date_part('year'::text,
CURRENT_DATE) - 1::double precision) THEN
t."Amount_in_Company_Code_Currency"
ELSE NULL::numeric
END AS "Prior Period",
CASE
WHEN t."Fiscal_Year"::double precision = date_part('year'::text,
CURRENT_DATE) THEN t."Amount_in_Company_Code_Currency"
WHEN t."Fiscal_Year"::double precision = (date_part('year'::text,
CURRENT_DATE) - 1::double precision) THEN -
t."Amount_in_Company_Code_Currency"
ELSE NULL::numeric
END AS "Movement"
FROM model."IMETA_ZTRB_BRACS_Model_TA_BW3" t
LEFT JOIN ( SELECT "IMETA_Master_Currency_Data_TA_BR"."Currency",
"IMETA_Master_Currency_Data_TA_BR"."Currency name",
CASE
WHEN "IMETA_Master_Currency_Data_TA_BR"."Currency"::text =
'USD'::text THEN 1::double precision
ELSE "IMETA_Master_Currency_Data_TA_BR"."Currency to value"
END AS "Conversion rate"
FROM dim."IMETA_Master_Currency_Data_TA_BR"
WHERE "IMETA_Master_Currency_Data_TA_BR"."Scenario"::text =
'BUD'::text) curr ON t."Company_Code_Currency" = curr."Currency"::text;
ALTER TABLE model."IMETA_ZTRB_BRACS_Model_TA_BW_View"
OR
-- Drop the view if it exists to prevent errors
DROP VIEW IF EXISTS model."IMETA_ZTRB_BRACS_Model_TA_BW_View";
-- Create or replace the view
CREATE OR REPLACE VIEW model."IMETA_ZTRB_BRACS_Model_TA_BW_View" AS
SELECT
t."ZTBR_TransactionCode",
-- ... (other columns)
t."SDM_Function",
-- Convert the amount to USD
ROUND((t."Amount_in_Company_Code_Currency" / curr."Conversion
rate")::numeric, 2) AS "Amount in USD",
-- Calculate the Current Period Amount
CASE
WHEN t."Fiscal_Year"::integer = EXTRACT(YEAR FROM CURRENT_DATE) THEN
t."Amount_in_Company_Code_Currency"
ELSE NULL
END AS "Current Period",
-- Calculate the Prior Period Amount
CASE
WHEN t."Fiscal_Year"::integer = EXTRACT(YEAR FROM CURRENT_DATE) - 1
THEN t."Amount_in_Company_Code_Currency"
ELSE NULL
END AS "Prior Period",
-- Calculate the Movement
CASE
WHEN t."Fiscal_Year"::integer = EXTRACT(YEAR FROM CURRENT_DATE) THEN
t."Amount_in_Company_Code_Currency"
WHEN t."Fiscal_Year"::integer = EXTRACT(YEAR FROM CURRENT_DATE) - 1
THEN -t."Amount_in_Company_Code_Currency"
ELSE NULL
END AS "Movement"
FROM
model."IMETA_ZTRB_BRACS_Model_TA_BW3" t
LEFT JOIN
(SELECT
"Currency",
"Currency name",
CASE
WHEN "Currency" = 'USD' THEN 1
ELSE "Currency to value"
END AS "Conversion rate"
FROM dim."IMETA_Master_Currency_Data_TA_BR"
WHERE "Scenario" = 'BUD') curr
ON t."Company_Code_Currency" = curr."Currency";
-- Change the ownership of the view
ALTER VIEW
select * from model."IMETA_ZTRB_BRACS_Model_TA_BW_View" limit 500 OWNER TO
apollia;
Attachment | Content-Type | Size |
---|---|---|
small sample code.txt | text/plain | 302 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Ron Johnson | 2023-11-23 14:07:08 | Re: pg_restore enhancements |
Previous Message | Daniel Westermann (DWE) | 2023-11-23 13:29:34 | Re: Corruption or wrong results with 14.10? |