| 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: | Whole Thread | Raw Message | 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? |