CREATE OR REPLACE PROCEDURE ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE_LOAD() RETURNS VARCHAR LANGUAGE SQL EXECUTE AS CALLER AS BEGIN CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VW_ORS_JOR_APPROVAL_INFORMATION_JOR_COST_RECAP_BYACCTCODE_STREAM_TEMP AS SELECT * FROM ${env}_ENT_INTEGRATION.SEM_DATA.VW_ORS_JOR_APPROVAL_INFORMATION_JOR_COST_RECAP_BYACCTCODE_STREAM WHERE DWH_BEGIN_TRANS IS NOT NULL AND DWH_END_TRANS IS NOT NULL; CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VT_JOR_PROJECT_APPROVAL AS ( SELECT PROJECT_NUMBER, FISCAL_YEAR_MONTH_NO, ETL_JOR_APPROVAL_INDICATOR, CASE WHEN COUNT(PA.FISCAL_YEAR_MONTH_NO) OVER (PARTITION BY PA.PROJECT_NUMBER ORDER BY FISCAL_YEAR_MONTH_NO ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) > 3 THEN 3 ELSE COUNT(PA.FISCAL_YEAR_MONTH_NO) OVER (PARTITION BY PA.PROJECT_NUMBER ORDER BY FISCAL_YEAR_MONTH_NO ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) END AS AVG_OFFSET FROM ( SELECT A.*, CASE WHEN B.METADATA$ACTION IS NOT NULL THEN true ELSE false END AS StreamData FROM ${env}_ENT_INTEGRATION.SEM_DATA.ORS_JOR_APPROVAL_INFORMATION A NATURAL LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.ORS_JOR_APPROVAL_INFORMATION_JOR_COST_RECAP_BYACCTCODE_STREAM_TEMP B ) PA WHERE PA.StreamData ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VT_ACC_CODE_BY_FISCAL_MONTH AS ( SELECT ACCOUNT_CODE, ACCOUNT_CODE_GROUP_DESCRIPTION, FISCAL_YEAR_MONTH_NO FROM ( SELECT FISCAL_YEAR_MONTH_NO FROM ${env}_ENT_CONSUMPTION.SEM_VW.FISCAL_CALENDAR WHERE CALENDAR_DATE >= '2018-01-01' AND CALENDAR_DATE <= CURRENT_DATE GROUP BY FISCAL_YEAR_MONTH_NO ) AS FISCALMONTH CROSS JOIN ( SELECT ACCOUNT_CODE, ACCOUNT_CODE_GROUP_DESCRIPTION FROM ${env}_ENT_INTEGRATION.SEM_DATA.ACCOUNT_CODE_HIERARCHY AG WHERE ACCOUNT_CODE_GROUP_ID <> '-1' GROUP BY ACCOUNT_CODE, ACCOUNT_CODE_GROUP_DESCRIPTION ) AS CODES ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VT_ER AS ( SELECT FC.FISCAL_YEAR_MONTH_NO, FER.CALENDAR_DATE, FER.FROM_CURRENCY_CODE, FER.TO_CURRENCY_CODE, FER.EXCHANGE_RATE FROM ${env}_ENT_CONSUMPTION.SEM_VW.FACT_EXCHANGE_RATE AS FER INNER JOIN ( SELECT FISCAL_YEAR_MONTH_NO, MAX(CALENDAR_DATE) AS CALENDAR_DATE FROM ${env}_ENT_CONSUMPTION.SEM_VW.FISCAL_CALENDAR GROUP BY FISCAL_YEAR_MONTH_NO ) AS FC ON FER.CALENDAR_DATE = FC.CALENDAR_DATE WHERE FER.FROM_CURRENCY_CODE = 'USD' AND FER.TO_CURRENCY_CODE = 'EUR' ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VT_SOURCE_CDC ( INS_UPD_IND CHAR(1) ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VT_JOR_COST_RECAP_BYACCTCODE_INSERT AS ( SELECT PROJECT_NUMBER, FISCAL_YEAR, FISCAL_MONTH, FISCAL_YEAR_MONTH_NO, JOR_GROUP, ORIGINAL_BUDGET, CURRENT_BUDGET, EARNED_CURRENT_BUDGET, EARNED_CURRENT_BUDGET_YTD, EARNED_CURRENT_BUDGET_JTD, ACTUAL_COST, ACTUAL_COST_YTD, ACTUAL_COST_JTD, FORECAST, FORECAST_CHANGE, FORECAST_CHANGE_PERCENT, ORIGINAL_BUDGET_MANHOURS, DIRECT_ORIGINAL_BUDGET_MANHOURS, INDIRECT_ORIGINAL_BUDGET_MANHOURS, CURRENT_BUDGET_MANHOURS, DIRECT_CURRENT_BUDGET_MANHOURS, INDIRECT_CURRENT_BUDGET_MANHOURS, EARNED_MANHOURS, DIRECT_EARNED_MANHOURS, INDIRECT_EARNED_MANHOURS, EARNED_MANHOURS_YTD, DIRECT_EARNED_MANHOURS_YTD, INDIRECT_EARNED_MANHOURS_YTD, EARNED_MANHOURS_JTD, DIRECT_EARNED_MANHOURS_JTD, INDIRECT_EARNED_MANHOURS_JTD, MANHOURS, DIRECT_MANHOURS, INDIRECT_MANHOURS, MANHOURS_YTD, DIRECT_MANHOURS_YTD, INDIRECT_MANHOURS_YTD, MANHOURS_JTD, DIRECT_MANHOURS_JTD, INDIRECT_MANHOURS_JTD, FORECAST_MANHOURS, DIRECT_FORECAST_MANHOURS, INDIRECT_FORECAST_MANHOURS, FORECAST_MANHOURS_CHANGE, DIRECT_FORECAST_MANHOURS_CHANGE, INDIRECT_FORECAST_MANHOURS_CHANGE, FORECAST_MANHOURS_CHANGE_PERCENT, DIRECT_FORECAST_MANHOURS_CHANGE_PERCENT, INDIRECT_FORECAST_MANHOURS_CHANGE_PERCENT, CURRENT_ESTIMATE_MANHOURS, DIRECT_CURRENT_ESTIMATE_MANHOURS, INDIRECT_CURRENT_ESTIMATE_MANHOURS, EARNED_CE_MANHOURS, DIRECT_EARNED_CE_MANHOURS, INDIRECT_EARNED_CE_MANHOURS, EARNED_CE_MANHOURS_YTD, DIRECT_EARNED_CE_MANHOURS_YTD, INDIRECT_EARNED_CE_MANHOURS_YTD, EARNED_CE_MANHOURS_JTD, DIRECT_EARNED_CE_MANHOURS_JTD, INDIRECT_EARNED_CE_MANHOURS_JTD, PERCENT_COMPLETE, PERCENT_COMPLETE_JTD, UNDER_OVER, UNDER_OVER_YTD, UNDER_OVER_JTD, FORECAST_UNDER_OVER, COMPANY_CURRENCY, USD_EXCHANGE_RATE, USD_FORECAST, USD_EARNED_CURRENT_BUDGET, USD_EARNED_CURRENT_BUDGET_YTD, USD_EARNED_CURRENT_BUDGET_JTD, USD_ACTUAL_COST, USD_ACTUAL_COST_YTD, USD_ACTUAL_COST_JTD FROM ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE_TEMPORAL ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VT_PJOR AS ( SELECT A.PROJECT_NUMBER, RPAD(CAST(CAST(A.FISCAL_YEAR_MONTH_NO / 100 AS NUMBER(4,0)) AS CHAR(4)), 4) AS FISCAL_YEAR, -- <4/12/2024> Added cast to `FISCAL_YEAR` remove trailing zeros and decimal point for `VT_PJOR` temporary table. RPAD(CAST(MOD(A.FISCAL_YEAR_MONTH_NO, 100) AS CHAR(2)), 2) AS FISCAL_MONTH, A.FISCAL_YEAR_MONTH_NO, A.CM_OMI, MAX(A.CM_OMI) OVER ( PARTITION BY A.PROJECT_NUMBER ORDER BY A.FISCAL_YEAR_MONTH_NO ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS PM_OMI, P.CURRENCY_ID, A.AVG_OFFSET, JPA.ETL_JOR_AS_OF_TIMESTAMP AS JOR_AS_OF_TIMESTAMP FROM ( SELECT LEFT(CAST(PROJECT_NUMBER AS VARCHAR), 10) AS PROJECT_NUMBER, FISCAL_YEAR_MONTH_NO, AVG_OFFSET, RPAD('Y', 1) AS CM_OMI FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_JOR_PROJECT_APPROVAL AS PJOR1 WHERE (ETL_JOR_APPROVAL_INDICATOR = '') UNION ALL SELECT LEFT(CAST(PJOR2.PROJECT_NUMBER AS VARCHAR), 10) AS PROJECT_NUMBER, MIN( CASE WHEN RTRIM(SUBSTR(LEFT(CAST((PJOR2.FISCAL_YEAR_MONTH_NO) AS VARCHAR), 6), 5, 2)) = '01' THEN CAST(CAST(SUBSTR(LEFT(CAST((PJOR2.FISCAL_YEAR_MONTH_NO) AS VARCHAR), 6), 1, 4) AS INTEGER) - 1 || '12' AS INTEGER) ELSE (FISCAL_YEAR_MONTH_NO) - 1 END ) AS FISCAL_YEAR_MONTH_NO, MIN(PJOR2.AVG_OFFSET), RPAD('N', 1) AS CM_OMI FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_JOR_PROJECT_APPROVAL AS PJOR2 WHERE (ETL_JOR_APPROVAL_INDICATOR = '') GROUP BY PJOR2.PROJECT_NUMBER ) AS A LEFT JOIN ${env}_ENT_CONSUMPTION.SEM_VW.PROJECT AS P ON A.PROJECT_NUMBER = P.PROJECT_NUMBER LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.ORS_JOR_APPROVAL_INFORMATION AS JPA ON JPA.PROJECT_NUMBER = A.PROJECT_NUMBER AND JPA.FISCAL_YEAR_MONTH_NO = A.FISCAL_YEAR_MONTH_NO ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VOL_PJOR_FILTER AS ( SELECT DISTINCT PROJECT_NUMBER, FISCAL_YEAR_MONTH_NO FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_PJOR UNION SELECT DISTINCT PROJECT_NUMBER, TO_NUMBER(TO_CHAR(TO_DATE(FISCAL_YEAR || FISCAL_MONTH || '01', 'yyyyMMdd') - INTERVAL '1 MONTH', 'yyyyMMdd')) AS FISCAL_YEAR_MONTH_NO -- <04/12/2024> -- Updated logic for `FISCAL_YEAR_MONTH_NO` column in the `VOL_PJOR_FILTER` table to recreate Teradata functionality. ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VOL_CR_FACT_EARNED_VALUES AS ( SELECT EV.PROJECT_NUMBER, EV.FISCAL_YEAR_MONTH_NO, EV.ACCOUNT_CODE, COALESCE(EV.ITD_EARNED_MANHOURS, 0.00) AS ITD_EARNED_MANHOURS, COALESCE(EV.EARNED_MANHOURS, 0.00) AS EARNED_MANHOURS, EV.CALENDAR_DATE, COALESCE(EV.ITD_EARNED_CURRENT_BUDGET_USD, 0.00) AS ITD_EARNED_CURRENT_BUDGET_USD, COALESCE(EV.ITD_EARNED_CURRENT_BUDGET_CAD, 0.00) AS ITD_EARNED_CURRENT_BUDGET_CAD, COALESCE(EV.ITD_EARNED_CURRENT_BUDGET_AUD, 0.00) AS ITD_EARNED_CURRENT_BUDGET_AUD, COALESCE(EV.ITD_EARNED_CURRENT_BUDGET_MXN, 0.00) AS ITD_EARNED_CURRENT_BUDGET_MXN, COALESCE(EV.ITD_EARNED_MANHOURS_CE, 0.00) AS ITD_EARNED_MANHOURS_CE, COALESCE(EV.EARNED_CURRENT_BUDGET_USD, 0.00) AS EARNED_CURRENT_BUDGET_USD, COALESCE(EV.EARNED_CURRENT_BUDGET_CAD, 0.00) AS EARNED_CURRENT_BUDGET_CAD, COALESCE(EV.EARNED_CURRENT_BUDGET_AUD, 0.00) AS EARNED_CURRENT_BUDGET_AUD, COALESCE(EV.EARNED_CURRENT_BUDGET_MXN, 0.00) AS EARNED_CURRENT_BUDGET_MXN, COALESCE(EV.EARNED_MANHOURS_CE, 0.00) AS EARNED_MANHOURS_CE FROM ${env}_ENT_CONSUMPTION.SEM_VW.CR_FACT_EARNED_VALUES EV INNER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VT_PJOR PJOR ON EV.PROJECT_NUMBER = PJOR.PROJECT_NUMBER AND EV.FISCAL_YEAR_MONTH_NO = PJOR.FISCAL_YEAR_MONTH_NO AND PJOR.CM_OMI = 'Y' WHERE EV.CALENDAR_DATE <= ( SELECT MAX(CALENDAR_DATE) FROM ${env}_ENT_CONSUMPTION.SEM_VW.CR_FACT_EARNED_VALUES EV2 WHERE EV.PROJECT_NUMBER = EV2.PROJECT_NUMBER AND EV.FISCAL_YEAR_MONTH_NO = EV2.FISCAL_YEAR_MONTH_NO ) ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VT_P AS ( SELECT PROJECT_NUMBER, FISCAL_YEAR, FISCAL_MONTH, PJOR.FISCAL_YEAR_MONTH_NO, COALESCE(AG.JOR_GROUP, 'Unknown') AS JOR_GROUP, PM_OMI, CM_OMI, AVG_OFFSET, JOR_AS_OF_TIMESTAMP FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_PJOR AS PJOR LEFT JOIN ( SELECT FISCAL_YEAR_MONTH_NO, ACCOUNT_CODE_GROUP_DESCRIPTION AS JOR_GROUP FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_ACC_CODE_BY_FISCAL_MONTH AS AG GROUP BY FISCAL_YEAR_MONTH_NO, ACCOUNT_CODE_GROUP_DESCRIPTION ) AG ON PJOR.FISCAL_YEAR_MONTH_NO = AG.FISCAL_YEAR_MONTH_NO ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VOL_ED2 AS ( SELECT PROJECT_NUMBER, FISCAL_YEAR_MONTH_NO AS FISCAL_YEAR_MONTH, JOR_GROUP, SUM(EARNED_CURRENT_BUDGET_JTD) AS EARNED_CURRENT_BUDGET_AMOUNT_JTD, SUM(EARNED_MANHOURS_JTD) AS EARNED_MHRS_JTD, SUM(CASE WHEN JOR_GROUP LIKE '%Direct Labor%' THEN EARNED_MANHOURS_JTD END) AS DIRECT_EARNED_MHRS_JTD, SUM(CASE WHEN JOR_GROUP NOT LIKE '%Direct Labor%' THEN EARNED_MANHOURS_JTD END) AS INDIRECT_EARNED_MHRS_JTD, SUM(EARNED_CE_MANHOURS_JTD) AS EARNED_CE_MHRS_JTD, SUM(CASE WHEN JOR_GROUP LIKE '%Direct Labor%' THEN EARNED_CE_MANHOURS_JTD END) AS DIRECT_EARNED_CE_MHRS_JTD, SUM(CASE WHEN JOR_GROUP NOT LIKE '%Direct Labor%' THEN EARNED_CE_MANHOURS_JTD END) AS INDIRECT_EARNED_CE_MHRS_JTD FROM ( SELECT EV.PROJECT_NUMBER, EV.CALENDAR_DATE, EV.FISCAL_YEAR_MONTH_NO, EV.ACCOUNT_CODE, CASE P.CURRENCY_ID WHEN 'USD' THEN EV.ITD_EARNED_CURRENT_BUDGET_USD WHEN 'CAD' THEN EV.ITD_EARNED_CURRENT_BUDGET_CAD WHEN 'AUD' THEN EV.ITD_EARNED_CURRENT_BUDGET_AUD WHEN 'MXN' THEN EV.ITD_EARNED_CURRENT_BUDGET_MXN WHEN 'EUR' THEN (EV.ITD_EARNED_CURRENT_BUDGET_USD * VER.EXCHANGE_RATE) END AS EARNED_CURRENT_BUDGET_JTD, EV.ITD_EARNED_MANHOURS AS EARNED_MANHOURS_JTD, EV.ITD_EARNED_MANHOURS_CE AS EARNED_CE_MANHOURS_JTD, COALESCE(AG.JOR_GROUP, 'Unknown') AS JOR_GROUP FROM ${env}_ENT_CONSUMPTION.SEM_VW.PROJECT P INNER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_CR_FACT_EARNED_VALUES EV ON P.PROJECT_NUMBER = EV.PROJECT_NUMBER AND EV.CALENDAR_DATE = ( SELECT MAX(CALENDAR_DATE) FROM ${env}_ENT_CONSUMPTION.SEM_VW.CR_FACT_EARNED_VALUES EV2 WHERE EV.PROJECT_NUMBER = EV2.PROJECT_NUMBER AND EV.FISCAL_YEAR_MONTH_NO = EV2.FISCAL_YEAR_MONTH_NO ) INNER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VT_ER AS VER ON EV.FISCAL_YEAR_MONTH_NO = VER.FISCAL_YEAR_MONTH_NO LEFT JOIN ( SELECT FISCAL_YEAR_MONTH_NO, ACCOUNT_CODE, ACCOUNT_CODE_GROUP_DESCRIPTION AS JOR_GROUP FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_ACC_CODE_BY_FISCAL_MONTH AS AG ) AG ON EV.FISCAL_YEAR_MONTH_NO = AG.FISCAL_YEAR_MONTH_NO AND EV.ACCOUNT_CODE = AG.ACCOUNT_CODE ) ED1 GROUP BY -- <4/12/2024> Update logic to explictly call `GROUP BY` columns. PROJECT_NUMBER, FISCAL_YEAR_MONTH, JOR_GROUP ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VOL_FACT_BUDGETS AS ( SELECT PROJECT_NUMBER, CR_FISCAL_YEAR_MONTH_NO AS FISCAL_YEAR_MONTH_NO, WBS_ELEMENT, --- ACCOUNT_CODE, SUM(ORIGINAL_BUDGET_AMOUNT) AS ORIGINAL_BUDGET_AMOUNT, SUM(CURRENT_BUDGET_AMOUNT) AS CURRENT_BUDGET_AMOUNT, SUM(FORECAST_AMOUNT) AS FORECAST_AMOUNT, SUM(FORECAST_CHANGE) AS FORECAST_CHANGE, SUM(FORECAST_AMOUNT_GL) AS FORECAST_AMOUNT_GL, SUM(ORIGINAL_BUDGET_MANHOURS) AS ORIGINAL_BUDGET_MANHOURS, SUM(CURRENT_BUDGET_MANHOURS) AS CURRENT_BUDGET_MANHOURS, SUM(FORECAST_MANHOURS) AS FORECAST_MANHOURS, SUM(FORECAST_MANHOURS_CHANGE) AS FORECAST_MANHOURS_CHANGE, SUM(FORECAST_MANHOURS_GL) AS FORECAST_MANHOURS_GL, SUM(CURRENT_ESTIMATE_MANHOURS) AS CURRENT_ESTIMATE_MANHOURS FROM ( SELECT x.PROJECT_NUMBER, x.CR_FISCAL_YEAR_MONTH_NO, WBS_ELEMENT, --- ACCOUNT_CODE, SUM(ORIGINAL_BUDGET_AMOUNT) AS ORIGINAL_BUDGET_AMOUNT, SUM(CURRENT_BUDGET_AMOUNT) AS CURRENT_BUDGET_AMOUNT, SUM(FORECAST_AMOUNT) AS FORECAST_AMOUNT, SUM(FORECAST_CHANGE) AS FORECAST_CHANGE, SUM(FORECAST_AMOUNT_GL) AS FORECAST_AMOUNT_GL, SUM(ORIGINAL_BUDGET_MANHOURS) AS ORIGINAL_BUDGET_MANHOURS, SUM(CURRENT_BUDGET_MANHOURS) AS CURRENT_BUDGET_MANHOURS, SUM(FORECAST_MANHOURS) AS FORECAST_MANHOURS, SUM(FORECAST_MANHOURS_CHANGE) AS FORECAST_MANHOURS_CHANGE, SUM(FORECAST_MANHOURS_GL) AS FORECAST_MANHOURS_GL, SUM(CURRENT_ESTIMATE_MANHOURS) AS CURRENT_ESTIMATE_MANHOURS FROM ${env}_ENT_CONSUMPTION.SEM_VW.CR_FACT_BUDGETS_PREV_MONTH x INNER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_PJOR_FILTER PJOR ON x.PROJECT_NUMBER = PJOR.PROJECT_NUMBER AND x.CR_FISCAL_YEAR_MONTH_NO = PJOR.FISCAL_YEAR_MONTH_NO GROUP BY -- <4/12/2024> Update `GROUP BY` to explictly group aggregation columns for `VOL_FACT_BUDGETS`. x.PROJECT_NUMBER, x.CR_FISCAL_YEAR_MONTH_NO, WBS_ELEMENT, ACCOUNT_CODE UNION ALL SELECT x.PROJECT_NUMBER, x.CR_FISCAL_YEAR_MONTH_NO, WBS_ELEMENT, --- ACCOUNT_CODE, SUM(ORIGINAL_BUDGET_AMOUNT) AS ORIGINAL_BUDGET_AMOUNT, SUM(CURRENT_BUDGET_AMOUNT) AS CURRENT_BUDGET_AMOUNT, SUM(FORECAST_AMOUNT) AS FORECAST_AMOUNT, NULL AS FORECAST_CHANGE, SUM(FORECAST_AMOUNT_GL) AS FORECAST_AMOUNT_GL, SUM(ORIGINAL_BUDGET_MANHOURS) AS ORIGINAL_BUDGET_MANHOURS, SUM(CURRENT_BUDGET_MANHOURS) AS CURRENT_BUDGET_MANHOURS, SUM(FORECAST_MANHOURS) AS FORECAST_MANHOURS, NULL AS FORECAST_MANHOURS_CHANGE, SUM(FORECAST_MANHOURS_GL) AS FORECAST_MANHOURS_GL, SUM(CURRENT_ESTIMATE_MANHOURS) AS CURRENT_ESTIMATE_MANHOURS FROM ${env}_ENT_CONSUMPTION.SEM_VW.FACT_BUDGETS_DAILY x INNER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_PJOR_FILTER PJOR ON x.PROJECT_NUMBER = PJOR.PROJECT_NUMBER AND x.CR_FISCAL_YEAR_MONTH_NO = PJOR.FISCAL_YEAR_MONTH_NO GROUP BY -- <4/12/2024> Update `GROUP BY` to explictly group aggregation columns for `VOL_FACT_BUDGETS`. x.PROJECT_NUMBER, x.CR_FISCAL_YEAR_MONTH_NO, WBS_ELEMENT, ACCOUNT_CODE ) B GROUP BY -- <4/12/2024> Update `GROUP BY` to explictly group aggregation columns for `VOL_FACT_BUDGETS`. PROJECT_NUMBER, CR_FISCAL_YEAR_MONTH_NO, WBS_ELEMENT, ACCOUNT_CODE ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VOL_FACT_ACTUALS_JTD_COMPLETE AS ( SELECT PROJECT_NUMBER, ACCOUNT_CODE, FISCAL_YEAR_MONTH_NO, SUM(JTD_MAN_HOURS) AS JTD_MAN_HOURS, SUM(JTD_ACTUAL_COST) AS JTD_ACTUAL_COST FROM ( SELECT x.PROJECT_NUMBER, x.ACCOUNT_CODE, x.FISCAL_YEAR_MONTH_NO, SUM(JTD_MAN_HOURS) AS JTD_MAN_HOURS, SUM(JTD_ACTUAL_COST) AS JTD_ACTUAL_COST FROM ${env}_ENT_CONSUMPTION.SEM_VW.FACT_ACTUALS_JTD x INNER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_PJOR_FILTER PJOR ON x.PROJECT_NUMBER = PJOR.PROJECT_NUMBER AND x.FISCAL_YEAR_MONTH_NO = PJOR.FISCAL_YEAR_MONTH_NO GROUP BY -- <4/12/2024> Update `GROUP BY` to explictly group aggregation columns for `VOL_FACT_ACTUALS_JTD_COMPLETE`. x.PROJECT_NUMBER, x.ACCOUNT_CODE, x.FISCAL_YEAR_MONTH_NO -------------- UNION ALL -------------- SELECT x.PROJECT_NUMBER, x.ACCOUNT_CODE, x.FISCAL_YEAR_MONTH_NO, SUM(MAN_HOURS) AS MAN_HOURS, SUM(ACTUAL_COST) AS ACTUAL_COST FROM ${env}_ENT_CONSUMPTION.SEM_VW.FACT_ACTUALS x INNER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_PJOR_FILTER PJOR ON x.PROJECT_NUMBER = PJOR.PROJECT_NUMBER AND x.FISCAL_YEAR_MONTH_NO = PJOR.FISCAL_YEAR_MONTH_NO GROUP BY -- <4/12/2024> Update `GROUP BY` to explictly group aggregation columns for `VOL_FACT_ACTUALS_JTD_COMPLETE`. x.PROJECT_NUMBER, x.ACCOUNT_CODE, x.FISCAL_YEAR_MONTH_NO GROUP BY PROJECT_NUMBER, ACCOUNT_CODE, FISCAL_YEAR_MONTH_NO ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VOL_MAX_CR_FACT_STRAIGHT_LINE AS ( SELECT SL.PROJECT_NUMBER, SL.FISCAL_YEAR_MONTH_NO, SL.ACCOUNT_CODE, SL.WBS_ELEMENT, SL.STRAIGHT_LINE_USD, SL.STRAIGHT_LINE_CAD, SL.STRAIGHT_LINE_AUD, SL.STRAIGHT_LINE_MXN, FISCAL_YEAR_WEEK_NO FROM ${env}_ENT_CONSUMPTION.SEM_VW.CR_FACT_STRAIGHT_LINE SL WHERE FISCAL_YEAR_WEEK_NO = ( SELECT MAX(FISCAL_YEAR_WEEK_NO) FROM ${env}_ENT_CONSUMPTION.SEM_VW.CR_FACT_STRAIGHT_LINE SL2 WHERE SL.PROJECT_NUMBER = SL2.PROJECT_NUMBER AND SL.FISCAL_YEAR_MONTH_NO = SL2.FISCAL_YEAR_MONTH_NO ) AND SL.FISCAL_YEAR_MONTH_NO > = ( SELECT MIN(FISCAL_YEAR_MONTH_NO) FROM ${env}_ENT_INTEGRATION.SEM_DATA.VOL_PJOR_FILTER ) ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VOL_EARNED_JTD AS ( SELECT P.PROJECT_NUMBER, P.FISCAL_YEAR_MONTH, P.JOR_GROUP, COALESCE(JTD.EARNED_CURRENT_BUDGET_AMOUNT_JTD, 0) AS EARNED_CURRENT_BUDGET_AMOUNT_JTD, COALESCE(JTD.EARNED_CURRENT_BUDGET_AMOUNT_JTD, 0) - COALESCE(CUR_PM.EARNED_CURRENT_BUDGET_AMOUNT_JTD, PREV_MO.EARNED_CURRENT_BUDGET_JTD, 0) AS EARNED_CURRENT_BUDGET_AMOUNT, COALESCE(JTD.EARNED_CURRENT_BUDGET_AMOUNT_JTD, 0) - COALESCE(PREV_YR.EARNED_CURRENT_BUDGET_JTD, 0) AS EARNED_CURRENT_BUDGET_AMOUNT_YTD, COALESCE(JTD.EARNED_MHRS_JTD, 0) AS EARNED_MHRS_JTD, COALESCE(JTD.EARNED_MHRS_JTD, 0) - COALESCE(CUR_PM.EARNED_MHRS_JTD, PREV_MO.EARNED_MANHOURS_JTD, 0) AS EARNED_MHRS, COALESCE(JTD.EARNED_MHRS_JTD, 0) - COALESCE(PREV_YR.EARNED_MANHOURS_JTD, 0) AS EARNED_MHRS_YTD, COALESCE(JTD.DIRECT_EARNED_MHRS_JTD, 0) AS DIRECT_EARNED_MHRS_JTD, COALESCE(JTD.DIRECT_EARNED_MHRS_JTD, 0) - COALESCE(CUR_PM.DIRECT_EARNED_MHRS_JTD, PREV_MO.DIRECT_EARNED_MANHOURS_JTD, 0) AS DIRECT_EARNED_MHRS, COALESCE(JTD.DIRECT_EARNED_MHRS_JTD, 0) - COALESCE(PREV_YR.DIRECT_EARNED_MANHOURS_JTD, 0) AS DIRECT_EARNED_MHRS_YTD, COALESCE(JTD.INDIRECT_EARNED_MHRS_JTD, 0) AS INDIRECT_EARNED_MHRS_JTD, COALESCE(JTD.INDIRECT_EARNED_MHRS_JTD, 0) - COALESCE(CUR_PM.INDIRECT_EARNED_MHRS_JTD, PREV_MO.INDIRECT_EARNED_MANHOURS_JTD, 0) AS INDIRECT_EARNED_MHRS, COALESCE(JTD.INDIRECT_EARNED_MHRS_JTD, 0) - COALESCE(PREV_YR.INDIRECT_EARNED_MANHOURS_JTD, 0) AS INDIRECT_EARNED_MHRS_YTD, COALESCE(JTD.EARNED_CE_MHRS_JTD, 0) AS EARNED_CE_MHRS_JTD, COALESCE(JTD.EARNED_CE_MHRS_JTD, 0) - COALESCE(CUR_PM.EARNED_CE_MHRS_JTD, PREV_MO.EARNED_CE_MANHOURS_JTD, 0) AS EARNED_CE_MHRS, COALESCE(JTD.EARNED_CE_MHRS_JTD, 0) - COALESCE(PREV_YR.EARNED_CE_MANHOURS_JTD, 0) AS EARNED_CE_MHRS_YTD, COALESCE(JTD.DIRECT_EARNED_CE_MHRS_JTD, 0) AS DIRECT_EARNED_CE_MHRS_JTD, COALESCE(JTD.DIRECT_EARNED_CE_MHRS_JTD, 0) - COALESCE(CUR_PM.DIRECT_EARNED_CE_MHRS_JTD, PREV_MO.DIRECT_EARNED_CE_MANHOURS_JTD, 0) AS DIRECT_EARNED_CE_MHRS, COALESCE(JTD.DIRECT_EARNED_CE_MHRS_JTD, 0) - COALESCE(PREV_YR.DIRECT_EARNED_CE_MANHOURS_JTD, 0) AS DIRECT_EARNED_CE_MHRS_YTD, COALESCE(JTD.INDIRECT_EARNED_CE_MHRS_JTD, 0) AS INDIRECT_EARNED_CE_MHRS_JTD, COALESCE(JTD.INDIRECT_EARNED_CE_MHRS_JTD, 0) - COALESCE(CUR_PM.INDIRECT_EARNED_CE_MHRS_JTD, PREV_MO.INDIRECT_EARNED_CE_MANHOURS_JTD, 0) AS INDIRECT_EARNED_CE_MHRS, COALESCE(JTD.INDIRECT_EARNED_CE_MHRS_JTD, 0) - COALESCE(PREV_YR.INDIRECT_EARNED_CE_MANHOURS_JTD, 0) AS INDIRECT_EARNED_CE_MHRS_YTD FROM ( SELECT PJOR.PROJECT_NUMBER, AG.FISCAL_YEAR_MONTH_NO AS FISCAL_YEAR_MONTH, AG.ACCOUNT_CODE_GROUP_DESCRIPTION AS JOR_GROUP FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_ACC_CODE_BY_FISCAL_MONTH AS AG INNER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VT_PJOR PJOR ON PJOR.FISCAL_YEAR_MONTH_NO = AG.FISCAL_YEAR_MONTH_NO AND PJOR.CM_OMI = 'Y' GROUP BY PJOR.PROJECT_NUMBER, AG.FISCAL_YEAR_MONTH_NO, AG.ACCOUNT_CODE_GROUP_DESCRIPTION ) P LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_ED2 JTD ON JTD.PROJECT_NUMBER = P.PROJECT_NUMBER AND JTD.FISCAL_YEAR_MONTH = P.FISCAL_YEAR_MONTH AND JTD.JOR_GROUP = P.JOR_GROUP LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE PREV_MO ON PREV_MO.PROJECT_NUMBER = P.PROJECT_NUMBER AND PREV_MO.JOR_GROUP = P.JOR_GROUP AND PREV_MO.FISCAL_YEAR_MONTH_NO = (CASE WHEN RTRIM(SUBSTR(LEFT(CAST((P.FISCAL_YEAR_MONTH) AS VARCHAR), 6), 5, 2)) = '01' THEN CAST(CAST(SUBSTR(LEFT(CAST((P.FISCAL_YEAR_MONTH) AS VARCHAR), 6), 1, 4) AS INTEGER) - 1 || '12' AS INTEGER) ELSE (P.FISCAL_YEAR_MONTH) - 1 END) LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_ED2 CUR_PM ON CUR_PM.PROJECT_NUMBER = P.PROJECT_NUMBER AND CUR_PM.JOR_GROUP = P.JOR_GROUP AND CUR_PM.FISCAL_YEAR_MONTH = (CASE WHEN RTRIM(SUBSTR(LEFT(CAST((P.FISCAL_YEAR_MONTH) AS VARCHAR), 6), 5, 2)) = '01' THEN CAST(CAST(SUBSTR(LEFT(CAST((P.FISCAL_YEAR_MONTH) AS VARCHAR), 6), 1, 4) AS INTEGER) - 1 || '12' AS INTEGER) ELSE (P.FISCAL_YEAR_MONTH) - 1 END) LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE PREV_YR ON PREV_YR.PROJECT_NUMBER = P.PROJECT_NUMBER AND PREV_YR.JOR_GROUP = P.JOR_GROUP AND PREV_YR.FISCAL_YEAR_MONTH_NO = (CAST(CAST(SUBSTR(LEFT(CAST((P.FISCAL_YEAR_MONTH) AS VARCHAR), 6), 1, 4) AS INTEGER) - 1 || '12' AS INTEGER)) ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VOL_D2 AS ( SELECT BV.PROJECT_NUMBER, BV.FISCAL_YEAR_MONTH_NO, COALESCE(AG.JOR_GROUP, 'Unknown') AS JOR_GROUP, SUM(BV.ORIGINAL_BUDGET_AMOUNT) AS ORIGINAL_BUDGET_AMOUNT, SUM(BV.CURRENT_BUDGET_AMOUNT) AS CURRENT_BUDGET_AMOUNT, SUM(FORECAST_AMOUNT) AS FORECAST_AMOUNT, SUM(FORECAST_CHANGE) AS FORECAST_CHANGE_AMOUNT, SUM(FORECAST_AMOUNT_GL) AS FORECAST_AMOUNT_GL, SUM(ORIGINAL_BUDGET_MANHOURS) AS ORIGINAL_BUDGET_MHRS, SUM(CASE WHEN JOR_GROUP LIKE '%Direct Labor%' THEN BV.ORIGINAL_BUDGET_MANHOURS END) AS DIRECT_ORIGINAL_BUDGET_MHRS, SUM(CASE WHEN JOR_GROUP NOT LIKE '%Direct Labor%' THEN BV.ORIGINAL_BUDGET_MANHOURS END) AS INDIRECT_ORIGINAL_BUDGET_MHRS, SUM(CURRENT_BUDGET_MANHOURS) AS CURRENT_BUDGET_MHRS, SUM(CASE WHEN JOR_GROUP LIKE '%Direct Labor%' THEN BV.CURRENT_BUDGET_MANHOURS END) AS DIRECT_CURRENT_BUDGET_MHRS, SUM(CASE WHEN JOR_GROUP NOT LIKE '%Direct Labor%' THEN BV.CURRENT_BUDGET_MANHOURS END) AS INDIRECT_CURRENT_BUDGET_MHRS, SUM(FORECAST_MANHOURS) AS FORECAST_MHRS, SUM(CASE WHEN JOR_GROUP LIKE '%Direct Labor%' THEN BV.FORECAST_MANHOURS END) AS DIRECT_FORECAST_MHRS, SUM(CASE WHEN JOR_GROUP NOT LIKE '%Direct Labor%' THEN BV.FORECAST_MANHOURS END) AS INDIRECT_FORECAST_MHRS, SUM(FORECAST_MANHOURS_CHANGE) AS FORECAST_MHRS_CHANGE, SUM(CASE WHEN JOR_GROUP LIKE '%Direct Labor%' THEN BV.FORECAST_MANHOURS_CHANGE END) AS DIRECT_FORECAST_MHRS_CHANGE, SUM(CASE WHEN JOR_GROUP NOT LIKE '%Direct Labor%' THEN BV.FORECAST_MANHOURS_CHANGE END) AS INDIRECT_FORECAST_MHRS_CHANGE, SUM(FORECAST_MANHOURS_GL) AS FORECAST_MHRS_GL, SUM(CASE WHEN JOR_GROUP LIKE '%Direct Labor%' THEN BV.FORECAST_MANHOURS_GL END) AS DIRECT_FORECAST_MHRS_GL, SUM(CASE WHEN JOR_GROUP NOT LIKE '%Direct Labor%' THEN BV.FORECAST_MANHOURS_GL END) AS INDIRECT_FORECAST_MHRS_GL, SUM(CURRENT_ESTIMATE_MANHOURS) AS CURRENT_ESTIMATE_MHRS, SUM(CASE WHEN JOR_GROUP LIKE '%Direct Labor%' THEN BV.CURRENT_ESTIMATE_MANHOURS END) AS DIRECT_CURRENT_ESTIMATE_MHRS, SUM(CASE WHEN JOR_GROUP NOT LIKE '%Direct Labor%' THEN BV.CURRENT_ESTIMATE_MANHOURS END) AS INDIRECT_CURRENT_ESTIMATE_MHRS FROM ${env}_ENT_INTEGRATION.SEM_DATA.VOL_FACT_BUDGETS BV LEFT JOIN ( SELECT FISCAL_YEAR_MONTH_NO, ACCOUNT_CODE, ACCOUNT_CODE_GROUP_DESCRIPTION AS JOR_GROUP FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_ACC_CODE_BY_FISCAL_MONTH AS AG ) AG ON BV.FISCAL_YEAR_MONTH_NO = AG.FISCAL_YEAR_MONTH_NO AND BV.ACCOUNT_CODE = AG.ACCOUNT_CODE INNER JOIN ${env}_ENT_CONSUMPTION.SEM_VW.WBS_SNAPSHOT W ON BV.WBS_ELEMENT = W.WBS_ELEMENT AND BV.FISCAL_YEAR_MONTH_NO = W.FISCAL_YEAR_MONTH_NO GROUP BY -- <4/12/2024> Update `GROUP BY` to explictly group aggregation columns for `VOL_D2`. BV.PROJECT_NUMBER, BV.FISCAL_YEAR_MONTH_NO, COALESCE(AG.JOR_GROUP, 'Unknown') ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VOL_AD3 AS ( SELECT AJ.PROJECT_NUMBER, AJ.FISCAL_YEAR_MONTH_NO AS FISCAL_YEAR_MONTH, COALESCE(AG.JOR_GROUP, 'Unknown') AS JOR_GROUP, COALESCE(SUM(COALESCE(JTD_ACTUAL_COST, 0.0)), 0.0) AS ACTUAL_COST_AMOUNT_JTD, COALESCE(SUM(COALESCE(JTD_MAN_HOURS, 0.0)), 0.0) AS ACTUAL_MHRS_JTD, COALESCE(SUM(CASE WHEN AG.JOR_GROUP LIKE '%Direct Labor%' THEN COALESCE(JTD_MAN_HOURS, 0.0) END), 0.0) AS DIRECT_MHRS_JTD, COALESCE(SUM(CASE WHEN AG.JOR_GROUP NOT LIKE '%Direct Labor%' THEN COALESCE(JTD_MAN_HOURS, 0.0) END), 0.0) AS INDIRECT_MHRS_JTD FROM ${env}_ENT_INTEGRATION.SEM_DATA.VOL_FACT_ACTUALS_JTD_COMPLETE AJ LEFT JOIN ( SELECT FISCAL_YEAR_MONTH_NO, ACCOUNT_CODE, ACCOUNT_CODE_GROUP_DESCRIPTION AS JOR_GROUP FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_ACC_CODE_BY_FISCAL_MONTH AS AG ) AG ON AJ.FISCAL_YEAR_MONTH_NO = AG.FISCAL_YEAR_MONTH_NO AND AJ.ACCOUNT_CODE = AG.ACCOUNT_CODE GROUP BY AJ.PROJECT_NUMBER, AJ.FISCAL_YEAR_MONTH_NO, COALESCE(AG.JOR_GROUP, 'Unknown') ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VOL_D5 AS ( SELECT D12.PROJECT_NUMBER, D12.FISCAL_YEAR_MONTH_NO, D12.JOR_GROUP, SUM(D12.STRAIGHT_LINE_AMOUNT) AS STRAIGHT_LINE_AMOUNT FROM ( SELECT SL.PROJECT_NUMBER, SL.FISCAL_YEAR_MONTH_NO, SL.ACCOUNT_CODE, -- , AG.PROJECTION_RISK_GROUP -- , AG.MANAGEMENT_GROUP -- , AG.JOR_GROUP CASE P.CURRENCY_ID WHEN 'USD' THEN SL.STRAIGHT_LINE_USD WHEN 'CAD' THEN SL.STRAIGHT_LINE_CAD WHEN 'AUD' THEN SL.STRAIGHT_LINE_AUD WHEN 'MXN' THEN SL.STRAIGHT_LINE_MXN WHEN 'EUR' THEN (SL.STRAIGHT_LINE_USD * VER.EXCHANGE_RATE) END AS STRAIGHT_LINE_AMOUNT, COALESCE(AG.JOR_GROUP, 'Unknown') AS JOR_GROUP FROM ${env}_ENT_CONSUMPTION.SEM_VW.PROJECT P INNER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_MAX_CR_FACT_STRAIGHT_LINE SL ON P.PROJECT_NUMBER = SL.PROJECT_NUMBER INNER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_PJOR_FILTER PJOR4 ON SL.PROJECT_NUMBER = PJOR4.PROJECT_NUMBER AND SL.FISCAL_YEAR_MONTH_NO = PJOR4.FISCAL_YEAR_MONTH_NO INNER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VT_ER AS VER ON SL.FISCAL_YEAR_MONTH_NO = VER.FISCAL_YEAR_MONTH_NO INNER JOIN ${env}_ENT_CONSUMPTION.SEM_VW.WBS_SNAPSHOT X ON SL.WBS_ELEMENT = X.WBS_ELEMENT AND SL.FISCAL_YEAR_MONTH_NO = X.FISCAL_YEAR_MONTH_NO AND X.IS_TERMINAL = '1' LEFT JOIN ( SELECT FISCAL_YEAR_MONTH_NO, ACCOUNT_CODE, ACCOUNT_CODE_GROUP_DESCRIPTION AS JOR_GROUP FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_ACC_CODE_BY_FISCAL_MONTH AS AG ) AG ON SL.FISCAL_YEAR_MONTH_NO = AG.FISCAL_YEAR_MONTH_NO AND SL.ACCOUNT_CODE = AG.ACCOUNT_CODE ) D12 GROUP BY D12.PROJECT_NUMBER, D12.FISCAL_YEAR_MONTH_NO, D12.JOR_GROUP ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VT_Source2 AS ( SELECT D1.PROJECT_NUMBER, D1.FISCAL_YEAR_MONTH_NO AS FISCAL_YEAR_MONTH_NO, D1.JOR_GROUP AS JOR_GROUP, SUM(D2.FORECAST_MHRS) AS FORECAST_MANHOURS_GT_10_PCT, SUM(D3.STRAIGHT_LINE_MHRS) AS STRAIGHTLINE_MANHOURS_GT_10_PCT FROM ( SELECT EV.PROJECT_NUMBER, EV.FISCAL_YEAR_MONTH_NO, COALESCE(AG.JOR_GROUP, 'Unknown') AS JOR_GROUP, SUM(COALESCE(EV.ITD_EARNED_MANHOURS, 0.0)) AS EARNED_MHRS_JTD FROM ${env}_ENT_INTEGRATION.SEM_DATA.VOL_CR_FACT_EARNED_VALUES EV INNER JOIN ( SELECT FISCAL_YEAR_MONTH_NO, ACCOUNT_CODE, ACCOUNT_CODE_GROUP_DESCRIPTION AS JOR_GROUP FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_ACC_CODE_BY_FISCAL_MONTH AS AG WHERE ACCOUNT_CODE_GROUP_DESCRIPTION LIKE '%Direct Labor%' ) AG ON EV.FISCAL_YEAR_MONTH_NO = AG.FISCAL_YEAR_MONTH_NO AND EV.ACCOUNT_CODE = AG.ACCOUNT_CODE GROUP BY EV.PROJECT_NUMBER, EV.FISCAL_YEAR_MONTH_NO, COALESCE(AG.JOR_GROUP, 'Unknown') ) D1 INNER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VT_PJOR AS VPR ON VPR.PROJECT_NUMBER = D1.PROJECT_NUMBER AND VPR.FISCAL_YEAR_MONTH_NO = D1.FISCAL_YEAR_MONTH_NO INNER JOIN ( SELECT BV.PROJECT_NUMBER, BV.FISCAL_YEAR_MONTH_NO, COALESCE(AG.JOR_GROUP, 'Unknown') AS JOR_GROUP, SUM(COALESCE(CURRENT_BUDGET_MANHOURS, 0.0)) AS CURRENT_BUDGET_MHRS, SUM(COALESCE(FORECAST_MANHOURS, 0.0)) AS FORECAST_MHRS FROM ${env}_ENT_INTEGRATION.SEM_DATA.VOL_FACT_BUDGETS BV INNER JOIN ${env}_ENT_CONSUMPTION.SEM_VW.PROJECT P ON BV.PROJECT_NUMBER = P.PROJECT_NUMBER INNER JOIN ( SELECT FISCAL_YEAR_MONTH_NO, ACCOUNT_CODE, ACCOUNT_CODE_GROUP_DESCRIPTION AS JOR_GROUP FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_ACC_CODE_BY_FISCAL_MONTH AS AG WHERE ACCOUNT_CODE_GROUP_DESCRIPTION LIKE '%Direct Labor%' ) AG ON BV.FISCAL_YEAR_MONTH_NO = AG.FISCAL_YEAR_MONTH_NO AND BV.ACCOUNT_CODE = AG.ACCOUNT_CODE GROUP BY BV.PROJECT_NUMBER, BV.FISCAL_YEAR_MONTH_NO, COALESCE(AG.JOR_GROUP, 'Unknown') ) D2 ON D1.PROJECT_NUMBER = D2.PROJECT_NUMBER AND D1.FISCAL_YEAR_MONTH_NO = D2.FISCAL_YEAR_MONTH_NO AND D1.JOR_GROUP = D2.JOR_GROUP LEFT JOIN ( SELECT SL.PROJECT_NUMBER, SL.FISCAL_YEAR_MONTH_NO, COALESCE(AG.JOR_GROUP, 'Unknown') AS JOR_GROUP, SUM(COALESCE(SL.STRAIGHT_LINE_MANHOURS, 0.0)) AS STRAIGHT_LINE_MHRS FROM ${env}_ENT_CONSUMPTION.SEM_VW.CR_FACT_STRAIGHT_LINE SL INNER JOIN ( SELECT FISCAL_YEAR_MONTH_NO, ACCOUNT_CODE, ACCOUNT_CODE_GROUP_DESCRIPTION AS JOR_GROUP FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_ACC_CODE_BY_FISCAL_MONTH AS AG WHERE ACCOUNT_CODE_GROUP_DESCRIPTION LIKE '%Direct Labor%' ) AG ON SL.FISCAL_YEAR_MONTH_NO = AG.FISCAL_YEAR_MONTH_NO AND SL.ACCOUNT_CODE = AG.ACCOUNT_CODE WHERE FISCAL_YEAR_WEEK_NO = ( SELECT MAX(FISCAL_YEAR_WEEK_NO) FROM ${env}_ENT_CONSUMPTION.SEM_VW.CR_FACT_STRAIGHT_LINE SL2 WHERE SL.PROJECT_NUMBER = SL2.PROJECT_NUMBER AND SL.FISCAL_YEAR_MONTH_NO = SL2.FISCAL_YEAR_MONTH_NO ) GROUP BY SL.PROJECT_NUMBER, SL.FISCAL_YEAR_MONTH_NO, COALESCE(AG.JOR_GROUP, 'Unknown') ) D3 ON D1.PROJECT_NUMBER = D3.PROJECT_NUMBER AND D1.FISCAL_YEAR_MONTH_NO = D3.FISCAL_YEAR_MONTH_NO AND D1.JOR_GROUP = D3.JOR_GROUP WHERE COALESCE(D1.EARNED_MHRS_JTD / NULLIF(D2.CURRENT_BUDGET_MHRS, 0), 0.0) >= 0.1 GROUP BY D1.PROJECT_NUMBER, D1.FISCAL_YEAR_MONTH_NO, D1.JOR_GROUP ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VOL_ACTUALS_JTD AS ( SELECT P.PROJECT_NUMBER, P.FISCAL_YEAR_MONTH, P.JOR_GROUP, COALESCE(JTD.ACTUAL_COST_AMOUNT_JTD, 0) AS ACTUAL_COST_JTD, COALESCE(JTD.ACTUAL_COST_AMOUNT_JTD, 0) - COALESCE(CUR_PM.ACTUAL_COST_AMOUNT_JTD, PREV_MO.ACTUAL_COST_JTD, 0) AS ACTUAL_COST, COALESCE(JTD.ACTUAL_COST_AMOUNT_JTD, 0) - COALESCE(PREV_YR.ACTUAL_COST_JTD, 0) AS ACTUAL_COST_YTD, COALESCE(JTD.ACTUAL_MHRS_JTD, 0) AS MANHOURS_JTD, COALESCE(JTD.ACTUAL_MHRS_JTD, 0) - COALESCE(CUR_PM.ACTUAL_MHRS_JTD, PREV_MO.MANHOURS_JTD, 0) AS MANHOURS, COALESCE(JTD.ACTUAL_MHRS_JTD, 0) - COALESCE(PREV_YR.MANHOURS_JTD, 0) AS MANHOURS_YTD, COALESCE(JTD.DIRECT_MHRS_JTD, 0) AS DIRECT_MANHOURS_JTD, COALESCE(JTD.DIRECT_MHRS_JTD, 0) - COALESCE(CUR_PM.DIRECT_MHRS_JTD, PREV_MO.DIRECT_MANHOURS_JTD, 0) AS DIRECT_MANHOURS, COALESCE(JTD.DIRECT_MHRS_JTD, 0) - COALESCE(PREV_YR.DIRECT_MANHOURS_JTD, 0) AS DIRECT_MANHOURS_YTD, COALESCE(JTD.INDIRECT_MHRS_JTD, 0) AS INDIRECT_MANHOURS_JTD, COALESCE(JTD.INDIRECT_MHRS_JTD, 0) - COALESCE(CUR_PM.INDIRECT_MHRS_JTD, PREV_MO.INDIRECT_MANHOURS_JTD, 0) AS INDIRECT_MANHOURS, COALESCE(JTD.INDIRECT_MHRS_JTD, 0) - COALESCE(PREV_YR.INDIRECT_MANHOURS_JTD, 0) AS INDIRECT_MANHOURS_YTD FROM ( SELECT PJOR.PROJECT_NUMBER, AG.FISCAL_YEAR_MONTH_NO AS FISCAL_YEAR_MONTH, AG.ACCOUNT_CODE_GROUP_DESCRIPTION AS JOR_GROUP FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_ACC_CODE_BY_FISCAL_MONTH AS AG INNER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VT_PJOR PJOR ON PJOR.FISCAL_YEAR_MONTH_NO = AG.FISCAL_YEAR_MONTH_NO AND PJOR.CM_OMI = 'Y' GROUP BY PJOR.PROJECT_NUMBER, AG.FISCAL_YEAR_MONTH_NO, AG.ACCOUNT_CODE_GROUP_DESCRIPTION ) P LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_AD3 JTD ON JTD.PROJECT_NUMBER = P.PROJECT_NUMBER AND JTD.FISCAL_YEAR_MONTH = P.FISCAL_YEAR_MONTH AND JTD.JOR_GROUP = P.JOR_GROUP LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_AD3 CUR_PM ON CUR_PM.PROJECT_NUMBER = P.PROJECT_NUMBER AND CUR_PM.JOR_GROUP = P.JOR_GROUP AND CUR_PM.FISCAL_YEAR_MONTH = (CASE WHEN RTRIM(SUBSTR(LEFT(CAST((P.FISCAL_YEAR_MONTH) AS VARCHAR), 6), 5, 2)) = '01' THEN CAST(CAST(SUBSTR(LEFT(CAST((P.FISCAL_YEAR_MONTH) AS VARCHAR), 6), 1, 4) AS INTEGER) - 1 || '12' AS INTEGER) ELSE (P.FISCAL_YEAR_MONTH) - 1 END) LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE PREV_MO ON PREV_MO.PROJECT_NUMBER = P.PROJECT_NUMBER AND PREV_MO.JOR_GROUP = P.JOR_GROUP AND PREV_MO.FISCAL_YEAR_MONTH_NO = (CASE WHEN RTRIM(SUBSTR(LEFT(CAST((P.FISCAL_YEAR_MONTH) AS VARCHAR), 6), 5, 2)) = '01' THEN CAST(CAST(SUBSTR(LEFT(CAST((P.FISCAL_YEAR_MONTH) AS VARCHAR), 6), 1, 4) AS INTEGER) - 1 || '12' AS INTEGER) ELSE (P.FISCAL_YEAR_MONTH) - 1 END) LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE PREV_YR ON PREV_YR.PROJECT_NUMBER = P.PROJECT_NUMBER AND PREV_YR.JOR_GROUP = P.JOR_GROUP AND PREV_YR.FISCAL_YEAR_MONTH_NO = (CAST(CAST(SUBSTR(LEFT(CAST((P.FISCAL_YEAR_MONTH) AS VARCHAR), 6), 1, 4) AS INTEGER) - 1 || '12' AS INTEGER)) ); SELECT TOP 1 * FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_PJOR; CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VT_Source1 AS ( SELECT P1.PROJECT_NUMBER, P1.FISCAL_YEAR, P1.FISCAL_MONTH, P1.FISCAL_YEAR_MONTH_NO, P1.JOR_GROUP, P1.PM_OMI, P1.CM_OMI, P1.AVG_OFFSET, P1.JOR_AS_OF_TIMESTAMP, COALESCE(ORIGINAL_BUDGET_AMOUNT, 0.0) AS ORIGINAL_BUDGET, COALESCE(CURRENT_BUDGET_AMOUNT, 0.0) AS CURRENT_BUDGET, COALESCE(EARNED_CURRENT_BUDGET_AMOUNT, 0.0) AS EARNED_CURRENT_BUDGET, COALESCE(EARNED_CURRENT_BUDGET_AMOUNT_YTD, 0.0) AS EARNED_CURRENT_BUDGET_YTD, COALESCE(EARNED_CURRENT_BUDGET_AMOUNT_JTD, 0.0) AS EARNED_CURRENT_BUDGET_JTD, COALESCE(ACTUAL_COST, 0.0) AS ACTUAL_COST, COALESCE(ACTUAL_COST_YTD, 0.0) AS ACTUAL_COST_YTD, COALESCE(ACTUAL_COST_JTD, 0.0) AS ACTUAL_COST_JTD, COALESCE(FORECAST_AMOUNT, 0.0) AS FORECAST, COALESCE(FORECAST_CHANGE_AMOUNT, 0.0) AS FORECAST_CHANGE, COALESCE(FORECAST_CHANGE / NULLIF(SUM(FORECAST_AMOUNT_GL) OVER ( PARTITION BY P1.PROJECT_NUMBER, P1.JOR_GROUP ORDER BY P1.FISCAL_YEAR_MONTH_NO ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING), 0.0), 0.0) AS FORECAST_CHANGE_PERCENT, COALESCE(ORIGINAL_BUDGET_MHRS, 0.0) AS ORIGINAL_BUDGET_MANHOURS, COALESCE(DIRECT_ORIGINAL_BUDGET_MHRS, 0.0) AS DIRECT_ORIGINAL_BUDGET_MANHOURS, COALESCE(INDIRECT_ORIGINAL_BUDGET_MHRS, 0.0) AS INDIRECT_ORIGINAL_BUDGET_MANHOURS, COALESCE(CURRENT_BUDGET_MHRS, 0.0) AS CURRENT_BUDGET_MANHOURS, COALESCE(DIRECT_CURRENT_BUDGET_MHRS, 0.0) AS DIRECT_CURRENT_BUDGET_MANHOURS, COALESCE(INDIRECT_CURRENT_BUDGET_MHRS, 0.0) AS INDIRECT_CURRENT_BUDGET_MANHOURS, COALESCE(EARNED_MHRS, 0.0) AS EARNED_MANHOURS, COALESCE(DIRECT_EARNED_MHRS, 0.0) AS DIRECT_EARNED_MANHOURS, COALESCE(INDIRECT_EARNED_MHRS, 0.0) AS INDIRECT_EARNED_MANHOURS, COALESCE(EARNED_MHRS_YTD, 0.0) AS EARNED_MANHOURS_YTD, COALESCE(DIRECT_EARNED_MHRS_YTD, 0.0) AS DIRECT_EARNED_MANHOURS_YTD, COALESCE(INDIRECT_EARNED_MHRS_YTD, 0.0) AS INDIRECT_EARNED_MANHOURS_YTD, COALESCE(EARNED_CE_MHRS_YTD, 0.0) AS EARNED_CE_MANHOURS_YTD, COALESCE(DIRECT_EARNED_CE_MHRS_YTD, 0.0) AS DIRECT_EARNED_CE_MANHOURS_YTD, COALESCE(INDIRECT_EARNED_CE_MHRS_YTD, 0.0) AS INDIRECT_EARNED_CE_MANHOURS_YTD, COALESCE(EARNED_MHRS_JTD, 0.0) AS EARNED_MANHOURS_JTD, COALESCE(DIRECT_EARNED_MHRS_JTD, 0.0) AS DIRECT_EARNED_MANHOURS_JTD, COALESCE(INDIRECT_EARNED_MHRS_JTD, 0.0) AS INDIRECT_EARNED_MANHOURS_JTD, COALESCE(MANHOURS, 0.0) AS MANHOURS, COALESCE(DIRECT_MANHOURS, 0.0) AS DIRECT_MANHOURS, COALESCE(INDIRECT_MANHOURS, 0.0) AS INDIRECT_MANHOURS, COALESCE(MANHOURS_YTD, 0.0) AS MANHOURS_YTD, COALESCE(DIRECT_MANHOURS_YTD, 0.0) AS DIRECT_MANHOURS_YTD, COALESCE(INDIRECT_MANHOURS_YTD, 0.0) AS INDIRECT_MANHOURS_YTD, COALESCE(MANHOURS_JTD, 0.0) AS MANHOURS_JTD, COALESCE(DIRECT_MANHOURS_JTD, 0.0) AS DIRECT_MANHOURS_JTD, COALESCE(INDIRECT_MANHOURS_JTD, 0.0) AS INDIRECT_MANHOURS_JTD, COALESCE(FORECAST_MHRS, 0.0) AS FORECAST_MANHOURS, COALESCE(DIRECT_FORECAST_MHRS, 0.0) AS DIRECT_FORECAST_MANHOURS, COALESCE(INDIRECT_FORECAST_MHRS, 0.0) AS INDIRECT_FORECAST_MANHOURS, COALESCE(FORECAST_MHRS_CHANGE, 0.0) AS FORECAST_MANHOURS_CHANGE, COALESCE(DIRECT_FORECAST_MHRS_CHANGE, 0.0) AS DIRECT_FORECAST_MANHOURS_CHANGE, COALESCE(INDIRECT_FORECAST_MHRS_CHANGE, 0.0) AS INDIRECT_FORECAST_MANHOURS_CHANGE, COALESCE(FORECAST_MANHOURS_CHANGE / NULLIF(SUM(FORECAST_MHRS_GL) OVER ( PARTITION BY P1.PROJECT_NUMBER, P1.JOR_GROUP ORDER BY P1.FISCAL_YEAR_MONTH_NO ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING), 0.0), 0.0) AS FORECAST_MANHOURS_CHANGE_PERCENT, COALESCE(DIRECT_FORECAST_MANHOURS_CHANGE / NULLIF(SUM(DIRECT_FORECAST_MHRS_GL) OVER ( PARTITION BY P1.PROJECT_NUMBER, P1.JOR_GROUP ORDER BY P1.FISCAL_YEAR_MONTH_NO ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING), 0.0), 0.0) AS DIRECT_FORECAST_MANHOURS_CHANGE_PERCENT, COALESCE(INDIRECT_FORECAST_MANHOURS_CHANGE / NULLIF(SUM(INDIRECT_FORECAST_MHRS_GL) OVER ( PARTITION BY P1.PROJECT_NUMBER, P1.JOR_GROUP ORDER BY P1.FISCAL_YEAR_MONTH_NO ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING), 0.0), 0.0) AS INDIRECT_FORECAST_MANHOURS_CHANGE_PERCENT, COALESCE(CURRENT_ESTIMATE_MHRS, 0.0) AS CURRENT_ESTIMATE_MANHOURS, COALESCE(DIRECT_CURRENT_ESTIMATE_MHRS, 0.0) AS DIRECT_CURRENT_ESTIMATE_MANHOURS, COALESCE(INDIRECT_CURRENT_ESTIMATE_MHRS, 0.0) AS INDIRECT_CURRENT_ESTIMATE_MANHOURS, COALESCE(EARNED_CE_MHRS, 0.0) AS EARNED_CE_MANHOURS, COALESCE(DIRECT_EARNED_CE_MHRS, 0.0) AS DIRECT_EARNED_CE_MANHOURS, COALESCE(INDIRECT_EARNED_CE_MHRS, 0.0) AS INDIRECT_EARNED_CE_MANHOURS, COALESCE(EARNED_CE_MHRS_JTD, 0.0) AS EARNED_CE_MANHOURS_JTD, COALESCE(DIRECT_EARNED_CE_MHRS_JTD, 0.0) AS DIRECT_EARNED_CE_MANHOURS_JTD, COALESCE(INDIRECT_EARNED_CE_MHRS_JTD, 0.0) AS INDIRECT_EARNED_CE_MANHOURS_JTD FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_P P1 LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_EARNED_JTD JTD ON P1.PROJECT_NUMBER = JTD.PROJECT_NUMBER AND P1.FISCAL_YEAR_MONTH_NO = JTD.FISCAL_YEAR_MONTH AND P1.JOR_GROUP = JTD.JOR_GROUP LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_D2 D2 ON P1.PROJECT_NUMBER = D2.PROJECT_NUMBER AND P1.FISCAL_YEAR_MONTH_NO = D2.FISCAL_YEAR_MONTH_NO AND P1.JOR_GROUP = D2.JOR_GROUP LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_ACTUALS_JTD AJTD ON P1.PROJECT_NUMBER = AJTD.PROJECT_NUMBER AND P1.FISCAL_YEAR_MONTH_NO = AJTD.FISCAL_YEAR_MONTH AND P1.JOR_GROUP = AJTD.JOR_GROUP LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VOL_D5 D5 ON P1.PROJECT_NUMBER = D5.PROJECT_NUMBER AND P1.FISCAL_YEAR_MONTH_NO = D5.FISCAL_YEAR_MONTH_NO AND P1.JOR_GROUP = D5.JOR_GROUP ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VT_Source4 AS ( SELECT VS1.PROJECT_NUMBER, VS1.FISCAL_YEAR, VS1.FISCAL_MONTH, VS1.FISCAL_YEAR_MONTH_NO, VS1.JOR_AS_OF_TIMESTAMP, VS1.JOR_GROUP, VS1.ORIGINAL_BUDGET, VS1.CURRENT_BUDGET, VS1.EARNED_CURRENT_BUDGET, VS1.EARNED_CURRENT_BUDGET_YTD, VS1.EARNED_CURRENT_BUDGET_JTD, VS1.ACTUAL_COST, VS1.ACTUAL_COST_YTD, VS1.ACTUAL_COST_JTD, VS1.FORECAST, VS1.FORECAST_CHANGE, VS1.FORECAST_CHANGE_PERCENT, VS1.ORIGINAL_BUDGET_MANHOURS, VS1.DIRECT_ORIGINAL_BUDGET_MANHOURS, VS1.INDIRECT_ORIGINAL_BUDGET_MANHOURS, VS1.CURRENT_BUDGET_MANHOURS, VS1.DIRECT_CURRENT_BUDGET_MANHOURS, VS1.INDIRECT_CURRENT_BUDGET_MANHOURS, VS1.EARNED_MANHOURS, VS1.DIRECT_EARNED_MANHOURS, VS1.INDIRECT_EARNED_MANHOURS, VS1.EARNED_MANHOURS_YTD, VS1.DIRECT_EARNED_MANHOURS_YTD, VS1.INDIRECT_EARNED_MANHOURS_YTD, COALESCE(VS1.CURRENT_ESTIMATE_MANHOURS, 0.0) AS CURRENT_ESTIMATE_MANHOURS, COALESCE(VS1.DIRECT_CURRENT_ESTIMATE_MANHOURS, 0.0) AS DIRECT_CURRENT_ESTIMATE_MANHOURS, COALESCE(VS1.INDIRECT_CURRENT_ESTIMATE_MANHOURS, 0.0) AS INDIRECT_CURRENT_ESTIMATE_MANHOURS, COALESCE(VS1.EARNED_CE_MANHOURS, 0.0) AS EARNED_CE_MANHOURS, COALESCE(VS1.DIRECT_EARNED_CE_MANHOURS, 0.0) AS DIRECT_EARNED_CE_MANHOURS, COALESCE(VS1.INDIRECT_EARNED_CE_MANHOURS, 0.0) AS INDIRECT_EARNED_CE_MANHOURS, VS1.EARNED_CE_MANHOURS_YTD, VS1.DIRECT_EARNED_CE_MANHOURS_YTD, VS1.INDIRECT_EARNED_CE_MANHOURS_YTD, COALESCE(VS1.EARNED_CE_MANHOURS_JTD, 0.0) AS EARNED_CE_MANHOURS_JTD, COALESCE(VS1.DIRECT_EARNED_CE_MANHOURS_JTD, 0.0) AS DIRECT_EARNED_CE_MANHOURS_JTD, COALESCE(VS1.INDIRECT_EARNED_CE_MANHOURS_JTD, 0.0) AS INDIRECT_EARNED_CE_MANHOURS_JTD, VS1.EARNED_MANHOURS_JTD, VS1.DIRECT_EARNED_MANHOURS_JTD, VS1.INDIRECT_EARNED_MANHOURS_JTD, VS1.MANHOURS, VS1.DIRECT_MANHOURS, VS1.INDIRECT_MANHOURS, VS1.MANHOURS_YTD, VS1.DIRECT_MANHOURS_YTD, VS1.INDIRECT_MANHOURS_YTD, VS1.MANHOURS_JTD, VS1.DIRECT_MANHOURS_JTD, VS1.INDIRECT_MANHOURS_JTD, VS1.FORECAST_MANHOURS, VS1.DIRECT_FORECAST_MANHOURS, VS1.INDIRECT_FORECAST_MANHOURS, VS1.FORECAST_MANHOURS_CHANGE, VS1.DIRECT_FORECAST_MANHOURS_CHANGE, VS1.INDIRECT_FORECAST_MANHOURS_CHANGE, VS1.FORECAST_MANHOURS_CHANGE_PERCENT, VS1.DIRECT_FORECAST_MANHOURS_CHANGE_PERCENT, VS1.INDIRECT_FORECAST_MANHOURS_CHANGE_PERCENT FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_Source1 AS VS1 LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE_TEMPORAL AS VS2 ON VS1.PROJECT_NUMBER = VS2.PROJECT_NUMBER AND VS1.FISCAL_YEAR_MONTH_NO = VS2.FISCAL_YEAR_MONTH_NO AND VS1.JOR_GROUP = VS2.JOR_GROUP LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VT_Source2 AS VS3 ON VS1.PROJECT_NUMBER = VS3.PROJECT_NUMBER AND VS1.FISCAL_YEAR_MONTH_NO = VS3.FISCAL_YEAR_MONTH_NO AND VS1.JOR_GROUP = VS3.JOR_GROUP ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VT_Source5 AS ( SELECT VS4.PROJECT_NUMBER, VS4.FISCAL_YEAR, VS4.FISCAL_MONTH, VS4.FISCAL_YEAR_MONTH_NO, VS4.JOR_GROUP, COALESCE(ORIGINAL_BUDGET, 0.0) AS ORIGINAL_BUDGET, COALESCE(CURRENT_BUDGET, 0.0) AS CURRENT_BUDGET, COALESCE(EARNED_CURRENT_BUDGET, 0.0) AS EARNED_CURRENT_BUDGET, COALESCE(EARNED_CURRENT_BUDGET_YTD, 0.0) AS EARNED_CURRENT_BUDGET_YTD, COALESCE(EARNED_CURRENT_BUDGET_JTD, 0.0) AS EARNED_CURRENT_BUDGET_JTD, COALESCE(ACTUAL_COST, 0.0) AS ACTUAL_COST, COALESCE(ACTUAL_COST_YTD, 0.0) AS ACTUAL_COST_YTD, COALESCE(ACTUAL_COST_JTD, 0.0) AS ACTUAL_COST_JTD, COALESCE(FORECAST, 0.0) AS FORECAST, COALESCE(FORECAST_CHANGE, 0.0) AS FORECAST_CHANGE, COALESCE(FORECAST_CHANGE_PERCENT, 0.0) AS FORECAST_CHANGE_PERCENT, COALESCE(ORIGINAL_BUDGET_MANHOURS, 0.0) AS ORIGINAL_BUDGET_MANHOURS, COALESCE(DIRECT_ORIGINAL_BUDGET_MANHOURS, 0.0) AS DIRECT_ORIGINAL_BUDGET_MANHOURS, COALESCE(INDIRECT_ORIGINAL_BUDGET_MANHOURS, 0.0) AS INDIRECT_ORIGINAL_BUDGET_MANHOURS, COALESCE(CURRENT_BUDGET_MANHOURS, 0.0) AS CURRENT_BUDGET_MANHOURS, COALESCE(DIRECT_CURRENT_BUDGET_MANHOURS, 0.0) AS DIRECT_CURRENT_BUDGET_MANHOURS, COALESCE(INDIRECT_CURRENT_BUDGET_MANHOURS, 0.0) AS INDIRECT_CURRENT_BUDGET_MANHOURS, COALESCE(EARNED_MANHOURS, 0.0) AS EARNED_MANHOURS, COALESCE(DIRECT_EARNED_MANHOURS, 0.0) AS DIRECT_EARNED_MANHOURS, COALESCE(INDIRECT_EARNED_MANHOURS, 0.0) AS INDIRECT_EARNED_MANHOURS, COALESCE(EARNED_MANHOURS_YTD, 0.0) AS EARNED_MANHOURS_YTD, COALESCE(DIRECT_EARNED_MANHOURS_YTD, 0.0) AS DIRECT_EARNED_MANHOURS_YTD, COALESCE(INDIRECT_EARNED_MANHOURS_YTD, 0.0) AS INDIRECT_EARNED_MANHOURS_YTD, COALESCE(EARNED_MANHOURS_JTD, 0.0) AS EARNED_MANHOURS_JTD, COALESCE(DIRECT_EARNED_MANHOURS_JTD, 0.0) AS DIRECT_EARNED_MANHOURS_JTD, COALESCE(INDIRECT_EARNED_MANHOURS_JTD, 0.0) AS INDIRECT_EARNED_MANHOURS_JTD, COALESCE(MANHOURS, 0.0) AS MANHOURS, COALESCE(DIRECT_MANHOURS, 0.0) AS DIRECT_MANHOURS, COALESCE(INDIRECT_MANHOURS, 0.0) AS INDIRECT_MANHOURS, COALESCE(MANHOURS_YTD, 0.0) AS MANHOURS_YTD, COALESCE(DIRECT_MANHOURS_YTD, 0.0) AS DIRECT_MANHOURS_YTD, COALESCE(INDIRECT_MANHOURS_YTD, 0.0) AS INDIRECT_MANHOURS_YTD, COALESCE(MANHOURS_JTD, 0.0) AS MANHOURS_JTD, COALESCE(DIRECT_MANHOURS_JTD, 0.0) AS DIRECT_MANHOURS_JTD, COALESCE(INDIRECT_MANHOURS_JTD, 0.0) AS INDIRECT_MANHOURS_JTD, COALESCE(FORECAST_MANHOURS, 0.0) AS FORECAST_MANHOURS, COALESCE(DIRECT_FORECAST_MANHOURS, 0.0) AS DIRECT_FORECAST_MANHOURS, COALESCE(INDIRECT_FORECAST_MANHOURS, 0.0) AS INDIRECT_FORECAST_MANHOURS, COALESCE(FORECAST_MANHOURS_CHANGE, 0.0) AS FORECAST_MANHOURS_CHANGE, COALESCE(DIRECT_FORECAST_MANHOURS_CHANGE, 0.0) AS DIRECT_FORECAST_MANHOURS_CHANGE, COALESCE(INDIRECT_FORECAST_MANHOURS_CHANGE, 0.0) AS INDIRECT_FORECAST_MANHOURS_CHANGE, COALESCE(FORECAST_MANHOURS_CHANGE_PERCENT, 0.0) AS FORECAST_MANHOURS_CHANGE_PERCENT, COALESCE(DIRECT_FORECAST_MANHOURS_CHANGE_PERCENT, 0.0) AS DIRECT_FORECAST_MANHOURS_CHANGE_PERCENT, COALESCE(INDIRECT_FORECAST_MANHOURS_CHANGE_PERCENT, 0.0) AS INDIRECT_FORECAST_MANHOURS_CHANGE_PERCENT, COALESCE(CURRENT_ESTIMATE_MANHOURS, 0.0) AS CURRENT_ESTIMATE_MANHOURS, COALESCE(DIRECT_CURRENT_ESTIMATE_MANHOURS, 0.0) AS DIRECT_CURRENT_ESTIMATE_MANHOURS, COALESCE(INDIRECT_CURRENT_ESTIMATE_MANHOURS, 0.0) AS INDIRECT_CURRENT_ESTIMATE_MANHOURS, COALESCE(EARNED_CE_MANHOURS, 0.0) AS EARNED_CE_MANHOURS, COALESCE(DIRECT_EARNED_CE_MANHOURS, 0.0) AS DIRECT_EARNED_CE_MANHOURS, COALESCE(INDIRECT_EARNED_CE_MANHOURS, 0.0) AS INDIRECT_EARNED_CE_MANHOURS, COALESCE(EARNED_CE_MANHOURS_YTD, 0.0) AS EARNED_CE_MANHOURS_YTD, COALESCE(DIRECT_EARNED_CE_MANHOURS_YTD, 0.0) AS DIRECT_EARNED_CE_MANHOURS_YTD, COALESCE(INDIRECT_EARNED_CE_MANHOURS_YTD, 0.0) AS INDIRECT_EARNED_CE_MANHOURS_YTD, COALESCE(EARNED_CE_MANHOURS_JTD, 0.0) AS EARNED_CE_MANHOURS_JTD, COALESCE(DIRECT_EARNED_CE_MANHOURS_JTD, 0.0) AS DIRECT_EARNED_CE_MANHOURS_JTD, COALESCE(INDIRECT_EARNED_CE_MANHOURS_JTD, 0.0) AS INDIRECT_EARNED_CE_MANHOURS_JTD, CASE WHEN ROUND(EARNED_CURRENT_BUDGET / NULLIF(CURRENT_BUDGET, 0), 10) >= 1.00 THEN CAST(1 AS NUMBER(37, 37)) ELSE COALESCE(ROUND(EARNED_CURRENT_BUDGET / NULLIF(CURRENT_BUDGET, 0), 10), 0.0) END AS PERCENT_COMPLETE, CASE WHEN ROUND(EARNED_CURRENT_BUDGET_JTD / NULLIF(CURRENT_BUDGET, 0), 10) >= 1.00 THEN CAST(1 AS NUMBER(37, 37)) ELSE COALESCE(ROUND(EARNED_CURRENT_BUDGET_JTD / NULLIF(CURRENT_BUDGET, 0), 10), 0.0) END AS PERCENT_COMPLETE_JTD, EARNED_CURRENT_BUDGET - ACTUAL_COST AS UNDER_OVER, EARNED_CURRENT_BUDGET_YTD - ACTUAL_COST_YTD AS UNDER_OVER_YTD, EARNED_CURRENT_BUDGET_JTD - ACTUAL_COST_JTD AS UNDER_OVER_JTD, CURRENT_BUDGET - FORECAST AS FORECAST_UNDER_OVER, --------------------------------- USD currency ------------------------------------- COALESCE(ERUSD.EXCHANGE_RATE, 0.0) AS USD_EXCHANGE_RATE, COALESCE(P.CURRENCY_ID, '~|') AS COMPANY_CURRENCY, COALESCE(CAST(FORECAST * USD_EXCHANGE_RATE AS DECIMAL(18, 2)), 0.0) AS USD_FORECAST, COALESCE(CAST(EARNED_CURRENT_BUDGET * USD_EXCHANGE_RATE AS DECIMAL(18, 2)), 0.0) AS USD_EARNED_CURRENT_BUDGET, COALESCE(CAST(EARNED_CURRENT_BUDGET_YTD * USD_EXCHANGE_RATE AS DECIMAL(18, 2)), 0.0) AS USD_EARNED_CURRENT_BUDGET_YTD, COALESCE(CAST(EARNED_CURRENT_BUDGET_JTD * USD_EXCHANGE_RATE AS DECIMAL(18, 2)), 0.0) AS USD_EARNED_CURRENT_BUDGET_JTD, COALESCE(CAST(ACTUAL_COST * USD_EXCHANGE_RATE AS DECIMAL(18, 2)), 0.0) AS USD_ACTUAL_COST, COALESCE(CAST(ACTUAL_COST_YTD * USD_EXCHANGE_RATE AS DECIMAL(18, 2)), 0.0) AS USD_ACTUAL_COST_YTD, COALESCE(CAST(ACTUAL_COST_JTD * USD_EXCHANGE_RATE AS DECIMAL(18, 2)), 0.0) AS USD_ACTUAL_COST_JTD FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_Source4 AS VS4 INNER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.VT_PJOR AS VP ON VP.PROJECT_NUMBER = VS4.PROJECT_NUMBER AND VP.FISCAL_YEAR_MONTH_NO = VS4.FISCAL_YEAR_MONTH_NO INNER JOIN ${env}_ENT_CONSUMPTION.SEM_VW.PROJECT P ON VS4.PROJECT_NUMBER = P.PROJECT_NUMBER INNER JOIN ( SELECT DISTINCT FISCAL_YEAR_MONTH_NO, FISCAL_PERIOD_END_DATE FROM ${env}_ENT_CONSUMPTION.SEM_VW.FISCAL_CALENDAR ) CAL ON VS4.FISCAL_YEAR_MONTH_NO = CAL.FISCAL_YEAR_MONTH_NO LEFT JOIN ${env}_ENT_CONSUMPTION.SEM_VW.JOR_EXCHANGE_RATE ERUSD ON P.CURRENCY_ID = ERUSD.CURRENCY_FROM_ID AND ERUSD.CURRENCY_TO_ID = 'USD' AND CAL.FISCAL_PERIOD_END_DATE BETWEEN ERUSD.VALID_FROM_DATE AND ERUSD.VALID_TO_DATE WHERE VP.CM_OMI = 'Y' ); CREATE OR REPLACE TEMPORARY TABLE ${env}_ENT_INTEGRATION.SEM_DATA.VT_JOR_COST_RECAP_BYACCTCODE_CDC AS ( SELECT SRC.PROJECT_NUMBER, SRC.FISCAL_YEAR, SRC.FISCAL_MONTH, SRC.FISCAL_YEAR_MONTH_NO, SRC.JOR_GROUP, SRC.ORIGINAL_BUDGET, SRC.CURRENT_BUDGET, SRC.EARNED_CURRENT_BUDGET, SRC.EARNED_CURRENT_BUDGET_YTD, SRC.EARNED_CURRENT_BUDGET_JTD, SRC.ACTUAL_COST, SRC.ACTUAL_COST_YTD, SRC.ACTUAL_COST_JTD, SRC.FORECAST, SRC.FORECAST_CHANGE, SRC.FORECAST_CHANGE_PERCENT, SRC.ORIGINAL_BUDGET_MANHOURS, SRC.DIRECT_ORIGINAL_BUDGET_MANHOURS, SRC.INDIRECT_ORIGINAL_BUDGET_MANHOURS, SRC.CURRENT_BUDGET_MANHOURS, SRC.DIRECT_CURRENT_BUDGET_MANHOURS, SRC.INDIRECT_CURRENT_BUDGET_MANHOURS, SRC.EARNED_MANHOURS, SRC.DIRECT_EARNED_MANHOURS, SRC.INDIRECT_EARNED_MANHOURS, SRC.EARNED_MANHOURS_YTD, SRC.DIRECT_EARNED_MANHOURS_YTD, SRC.INDIRECT_EARNED_MANHOURS_YTD, SRC.EARNED_MANHOURS_JTD, SRC.DIRECT_EARNED_MANHOURS_JTD, SRC.INDIRECT_EARNED_MANHOURS_JTD, SRC.MANHOURS, SRC.DIRECT_MANHOURS, SRC.INDIRECT_MANHOURS, SRC.MANHOURS_YTD, SRC.DIRECT_MANHOURS_YTD, SRC.INDIRECT_MANHOURS_YTD, SRC.MANHOURS_JTD, SRC.DIRECT_MANHOURS_JTD, SRC.INDIRECT_MANHOURS_JTD, SRC.FORECAST_MANHOURS, SRC.DIRECT_FORECAST_MANHOURS, SRC.INDIRECT_FORECAST_MANHOURS, SRC.FORECAST_MANHOURS_CHANGE, SRC.DIRECT_FORECAST_MANHOURS_CHANGE, SRC.INDIRECT_FORECAST_MANHOURS_CHANGE, SRC.FORECAST_MANHOURS_CHANGE_PERCENT, SRC.DIRECT_FORECAST_MANHOURS_CHANGE_PERCENT, SRC.INDIRECT_FORECAST_MANHOURS_CHANGE_PERCENT, SRC.CURRENT_ESTIMATE_MANHOURS, SRC.DIRECT_CURRENT_ESTIMATE_MANHOURS, SRC.INDIRECT_CURRENT_ESTIMATE_MANHOURS, SRC.EARNED_CE_MANHOURS, SRC.DIRECT_EARNED_CE_MANHOURS, SRC.INDIRECT_EARNED_CE_MANHOURS, SRC.EARNED_CE_MANHOURS_YTD, SRC.DIRECT_EARNED_CE_MANHOURS_YTD, SRC.INDIRECT_EARNED_CE_MANHOURS_YTD, SRC.EARNED_CE_MANHOURS_JTD, SRC.DIRECT_EARNED_CE_MANHOURS_JTD, SRC.INDIRECT_EARNED_CE_MANHOURS_JTD, SRC.PERCENT_COMPLETE, SRC.PERCENT_COMPLETE_JTD, SRC.UNDER_OVER, SRC.UNDER_OVER_YTD, SRC.UNDER_OVER_JTD, SRC.FORECAST_UNDER_OVER, SRC.COMPANY_CURRENCY, SRC.USD_EXCHANGE_RATE, SRC.USD_FORECAST, SRC.USD_EARNED_CURRENT_BUDGET, SRC.USD_EARNED_CURRENT_BUDGET_YTD, SRC.USD_EARNED_CURRENT_BUDGET_JTD, SRC.USD_ACTUAL_COST, SRC.USD_ACTUAL_COST_YTD, SRC.USD_ACTUAL_COST_JTD, CASE WHEN TGT.PROJECT_NUMBER IS NULL THEN 'I' --Record marked for Insert --from delta sql genertion WHEN COALESCE(TGT.FISCAL_YEAR, '~|') <> COALESCE(SRC.FISCAL_YEAR, '~|') OR COALESCE(TGT.FISCAL_MONTH, '|') <> COALESCE(SRC.FISCAL_MONTH, '|') OR COALESCE(TGT.FISCAL_YEAR_MONTH_NO, '|') <> COALESCE(SRC.FISCAL_YEAR_MONTH_NO, '|') OR COALESCE(TGT.JOR_GROUP, '|') <> COALESCE(SRC.JOR_GROUP, '|') OR COALESCE(CAST(TGT.ORIGINAL_BUDGET AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.ORIGINAL_BUDGET AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.CURRENT_BUDGET AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.CURRENT_BUDGET AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.EARNED_CURRENT_BUDGET AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.EARNED_CURRENT_BUDGET AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.EARNED_CURRENT_BUDGET_YTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.EARNED_CURRENT_BUDGET_YTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.EARNED_CURRENT_BUDGET_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.EARNED_CURRENT_BUDGET_JTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.ACTUAL_COST AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.ACTUAL_COST AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.ACTUAL_COST_YTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.ACTUAL_COST_YTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.ACTUAL_COST_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.ACTUAL_COST_JTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.FORECAST AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.FORECAST AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.FORECAST_CHANGE AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.FORECAST_CHANGE AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.FORECAST_CHANGE_PERCENT AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.FORECAST_CHANGE_PERCENT AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.ORIGINAL_BUDGET_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.ORIGINAL_BUDGET_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_ORIGINAL_BUDGET_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_ORIGINAL_BUDGET_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_ORIGINAL_BUDGET_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_ORIGINAL_BUDGET_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.CURRENT_BUDGET_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.CURRENT_BUDGET_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_CURRENT_BUDGET_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_CURRENT_BUDGET_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_CURRENT_BUDGET_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_CURRENT_BUDGET_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.EARNED_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.EARNED_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_EARNED_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_EARNED_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_EARNED_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_EARNED_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.EARNED_MANHOURS_YTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.EARNED_MANHOURS_YTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_EARNED_MANHOURS_YTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_EARNED_MANHOURS_YTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_EARNED_MANHOURS_YTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_EARNED_MANHOURS_YTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.EARNED_MANHOURS_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.EARNED_MANHOURS_JTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_EARNED_MANHOURS_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_EARNED_MANHOURS_JTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_EARNED_MANHOURS_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_EARNED_MANHOURS_JTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.MANHOURS_YTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.MANHOURS_YTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_MANHOURS_YTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_MANHOURS_YTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_MANHOURS_YTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_MANHOURS_YTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.MANHOURS_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.MANHOURS_JTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_MANHOURS_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_MANHOURS_JTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_MANHOURS_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_MANHOURS_JTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.FORECAST_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.FORECAST_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_FORECAST_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_FORECAST_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_FORECAST_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_FORECAST_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.FORECAST_MANHOURS_CHANGE AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.FORECAST_MANHOURS_CHANGE AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_FORECAST_MANHOURS_CHANGE AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_FORECAST_MANHOURS_CHANGE AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_FORECAST_MANHOURS_CHANGE AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_FORECAST_MANHOURS_CHANGE AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.FORECAST_MANHOURS_CHANGE_PERCENT AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.FORECAST_MANHOURS_CHANGE_PERCENT AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_FORECAST_MANHOURS_CHANGE_PERCENT AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_FORECAST_MANHOURS_CHANGE_PERCENT AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_FORECAST_MANHOURS_CHANGE_PERCENT AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_FORECAST_MANHOURS_CHANGE_PERCENT AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.CURRENT_ESTIMATE_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.CURRENT_ESTIMATE_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_CURRENT_ESTIMATE_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_CURRENT_ESTIMATE_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_CURRENT_ESTIMATE_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_CURRENT_ESTIMATE_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.EARNED_CE_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.EARNED_CE_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_EARNED_CE_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_EARNED_CE_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_EARNED_CE_MANHOURS AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_EARNED_CE_MANHOURS AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.EARNED_CE_MANHOURS_YTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.EARNED_CE_MANHOURS_YTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_EARNED_CE_MANHOURS_YTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_EARNED_CE_MANHOURS_YTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_EARNED_CE_MANHOURS_YTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_EARNED_CE_MANHOURS_YTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.EARNED_CE_MANHOURS_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.EARNED_CE_MANHOURS_JTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.DIRECT_EARNED_CE_MANHOURS_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.DIRECT_EARNED_CE_MANHOURS_JTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.INDIRECT_EARNED_CE_MANHOURS_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.INDIRECT_EARNED_CE_MANHOURS_JTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.PERCENT_COMPLETE AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.PERCENT_COMPLETE AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.PERCENT_COMPLETE_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.PERCENT_COMPLETE_JTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.UNDER_OVER AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.UNDER_OVER AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.UNDER_OVER_YTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.UNDER_OVER_YTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.UNDER_OVER_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.UNDER_OVER_JTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.FORECAST_UNDER_OVER AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.FORECAST_UNDER_OVER AS NUMBER(38, 5)), -128) OR COALESCE(TGT.COMPANY_CURRENCY, '~|') <> COALESCE(SRC.COMPANY_CURRENCY, '~|') OR COALESCE(CAST(TGT.USD_EXCHANGE_RATE AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.USD_EXCHANGE_RATE AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.USD_FORECAST AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.USD_FORECAST AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.USD_EARNED_CURRENT_BUDGET AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.USD_EARNED_CURRENT_BUDGET AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.USD_EARNED_CURRENT_BUDGET_YTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.USD_EARNED_CURRENT_BUDGET_YTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.USD_EARNED_CURRENT_BUDGET_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.USD_EARNED_CURRENT_BUDGET_JTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.USD_ACTUAL_COST AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.USD_ACTUAL_COST AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.USD_ACTUAL_COST_YTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.USD_ACTUAL_COST_YTD AS NUMBER(38, 5)), -128) OR COALESCE(CAST(TGT.USD_ACTUAL_COST_JTD AS NUMBER(38, 5)), -128) <> COALESCE(CAST(SRC.USD_ACTUAL_COST_JTD AS NUMBER(38, 5)), -128) THEN 'U' --Record makred for Update ELSE 'X' --No action needed, no change END AS INS_UPD_IND FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_Source5 SRC LEFT OUTER JOIN ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE_TEMPORAL TGT ON TGT.PROJECT_NUMBER = SRC.PROJECT_NUMBER AND TGT.FISCAL_YEAR_MONTH_NO = SRC.FISCAL_YEAR_MONTH_NO AND TGT.JOR_GROUP = SRC.JOR_GROUP ); -- SELECT TOP 1 -- 'CDC_${env}_ENT_INTEGRATION.SEM_DATA.VT_ACTIVITY_CHECK' -- FROM -- ${env}_ENT_INTEGRATION.SEM_DATA.VT_JOR_COST_RECAP_BYACCTCODE_CDC SRC -- WHERE -- SRC.INS_UPD_IND <> 'X'; -- <04/12/2024> Updated `UPDATE` statement to use DWH_AUDIT_ID from temporary stream table. UPDATE ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE_TEMPORAL SET FISCAL_YEAR = SRC.FISCAL_YEAR, FISCAL_MONTH = SRC.FISCAL_MONTH, FISCAL_YEAR_MONTH_NO = SRC.FISCAL_YEAR_MONTH_NO, JOR_GROUP = SRC.JOR_GROUP, ORIGINAL_BUDGET = SRC.ORIGINAL_BUDGET, CURRENT_BUDGET = SRC.CURRENT_BUDGET, EARNED_CURRENT_BUDGET = SRC.EARNED_CURRENT_BUDGET, EARNED_CURRENT_BUDGET_YTD = SRC.EARNED_CURRENT_BUDGET_YTD, EARNED_CURRENT_BUDGET_JTD = SRC.EARNED_CURRENT_BUDGET_JTD, ACTUAL_COST = SRC.ACTUAL_COST, ACTUAL_COST_YTD = SRC.ACTUAL_COST_YTD, ACTUAL_COST_JTD = SRC.ACTUAL_COST_JTD, FORECAST = SRC.FORECAST, FORECAST_CHANGE = SRC.FORECAST_CHANGE, FORECAST_CHANGE_PERCENT = SRC.FORECAST_CHANGE_PERCENT, ORIGINAL_BUDGET_MANHOURS = SRC.ORIGINAL_BUDGET_MANHOURS, DIRECT_ORIGINAL_BUDGET_MANHOURS = SRC.DIRECT_ORIGINAL_BUDGET_MANHOURS, INDIRECT_ORIGINAL_BUDGET_MANHOURS = SRC.INDIRECT_ORIGINAL_BUDGET_MANHOURS, CURRENT_BUDGET_MANHOURS = SRC.CURRENT_BUDGET_MANHOURS, DIRECT_CURRENT_BUDGET_MANHOURS = SRC.DIRECT_CURRENT_BUDGET_MANHOURS, INDIRECT_CURRENT_BUDGET_MANHOURS = SRC.INDIRECT_CURRENT_BUDGET_MANHOURS, EARNED_MANHOURS = SRC.EARNED_MANHOURS, DIRECT_EARNED_MANHOURS = SRC.DIRECT_EARNED_MANHOURS, INDIRECT_EARNED_MANHOURS = SRC.INDIRECT_EARNED_MANHOURS, EARNED_MANHOURS_YTD = SRC.EARNED_MANHOURS_YTD, DIRECT_EARNED_MANHOURS_YTD = SRC.DIRECT_EARNED_MANHOURS_YTD, INDIRECT_EARNED_MANHOURS_YTD = SRC.INDIRECT_EARNED_MANHOURS_YTD, EARNED_MANHOURS_JTD = SRC.EARNED_MANHOURS_JTD, DIRECT_EARNED_MANHOURS_JTD = SRC.DIRECT_EARNED_MANHOURS_JTD, INDIRECT_EARNED_MANHOURS_JTD = SRC.INDIRECT_EARNED_MANHOURS_JTD, MANHOURS = SRC.MANHOURS, DIRECT_MANHOURS = SRC.DIRECT_MANHOURS, INDIRECT_MANHOURS = SRC.INDIRECT_MANHOURS, MANHOURS_YTD = SRC.MANHOURS_YTD, DIRECT_MANHOURS_YTD = SRC.DIRECT_MANHOURS_YTD, INDIRECT_MANHOURS_YTD = SRC.INDIRECT_MANHOURS_YTD, MANHOURS_JTD = SRC.MANHOURS_JTD, DIRECT_MANHOURS_JTD = SRC.DIRECT_MANHOURS_JTD, INDIRECT_MANHOURS_JTD = SRC.INDIRECT_MANHOURS_JTD, FORECAST_MANHOURS = SRC.FORECAST_MANHOURS, DIRECT_FORECAST_MANHOURS = SRC.DIRECT_FORECAST_MANHOURS, INDIRECT_FORECAST_MANHOURS = SRC.INDIRECT_FORECAST_MANHOURS, FORECAST_MANHOURS_CHANGE = SRC.FORECAST_MANHOURS_CHANGE, DIRECT_FORECAST_MANHOURS_CHANGE = SRC.DIRECT_FORECAST_MANHOURS_CHANGE, INDIRECT_FORECAST_MANHOURS_CHANGE = SRC.INDIRECT_FORECAST_MANHOURS_CHANGE, FORECAST_MANHOURS_CHANGE_PERCENT = SRC.FORECAST_MANHOURS_CHANGE_PERCENT, DIRECT_FORECAST_MANHOURS_CHANGE_PERCENT = SRC.DIRECT_FORECAST_MANHOURS_CHANGE_PERCENT, INDIRECT_FORECAST_MANHOURS_CHANGE_PERCENT = SRC.INDIRECT_FORECAST_MANHOURS_CHANGE_PERCENT, CURRENT_ESTIMATE_MANHOURS = SRC.CURRENT_ESTIMATE_MANHOURS, DIRECT_CURRENT_ESTIMATE_MANHOURS = SRC.DIRECT_CURRENT_ESTIMATE_MANHOURS, INDIRECT_CURRENT_ESTIMATE_MANHOURS = SRC.INDIRECT_CURRENT_ESTIMATE_MANHOURS, EARNED_CE_MANHOURS = SRC.EARNED_CE_MANHOURS, DIRECT_EARNED_CE_MANHOURS = SRC.DIRECT_EARNED_CE_MANHOURS, INDIRECT_EARNED_CE_MANHOURS = SRC.INDIRECT_EARNED_CE_MANHOURS, EARNED_CE_MANHOURS_YTD = SRC.EARNED_CE_MANHOURS_YTD, DIRECT_EARNED_CE_MANHOURS_YTD = SRC.DIRECT_EARNED_CE_MANHOURS_YTD, INDIRECT_EARNED_CE_MANHOURS_YTD = SRC.INDIRECT_EARNED_CE_MANHOURS_YTD, EARNED_CE_MANHOURS_JTD = SRC.EARNED_CE_MANHOURS_JTD, DIRECT_EARNED_CE_MANHOURS_JTD = SRC.DIRECT_EARNED_CE_MANHOURS_JTD, INDIRECT_EARNED_CE_MANHOURS_JTD = SRC.INDIRECT_EARNED_CE_MANHOURS_JTD, PERCENT_COMPLETE = SRC.PERCENT_COMPLETE, PERCENT_COMPLETE_JTD = SRC.PERCENT_COMPLETE_JTD, UNDER_OVER = SRC.UNDER_OVER, UNDER_OVER_YTD = SRC.UNDER_OVER_YTD, UNDER_OVER_JTD = SRC.UNDER_OVER_JTD, FORECAST_UNDER_OVER = SRC.FORECAST_UNDER_OVER, COMPANY_CURRENCY = SRC.COMPANY_CURRENCY, USD_EXCHANGE_RATE = SRC.USD_EXCHANGE_RATE, USD_FORECAST = SRC.USD_FORECAST, USD_EARNED_CURRENT_BUDGET = SRC.USD_EARNED_CURRENT_BUDGET, USD_EARNED_CURRENT_BUDGET_YTD = SRC.USD_EARNED_CURRENT_BUDGET_YTD, USD_EARNED_CURRENT_BUDGET_JTD = SRC.USD_EARNED_CURRENT_BUDGET_JTD, USD_ACTUAL_COST = SRC.USD_ACTUAL_COST, USD_ACTUAL_COST_YTD = SRC.USD_ACTUAL_COST_YTD, USD_ACTUAL_COST_JTD = SRC.USD_ACTUAL_COST_JTD, DWH_AUDIT_ID = STREAM_TEMP.DWH_AUDIT_ID FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_JOR_COST_RECAP_BYACCTCODE_CDC SRC LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.SEM_DATA.ORS_JOR_APPROVAL_INFORMATION_JOR_COST_RECAP_BYACCTCODE_STREAM_TEMP AS STREAM_TEMP ON STREAM_TEMP.PROJECT_NUMBER = SRC.PROJECT_NUMBER AND STREAM_TEMP.FISCAL_YEAR_MONTH_NO = SRC.FISCAL_YEAR_MONTH_NO WHERE SRC.PROJECT_NUMBER = ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE_TEMPORAL.PROJECT_NUMBER AND SRC.FISCAL_YEAR_MONTH_NO = ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE_TEMPORAL.FISCAL_YEAR_MONTH_NO AND SRC.JOR_GROUP = ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE_TEMPORAL.JOR_GROUP AND SRC.INS_UPD_IND = 'U'; -- <04/12/2024> Update INSERT statement for ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE_TEMPORAL --to use DWH_AUDIT_ID from temporary stream table. INSERT INTO ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE_TEMPORAL ( PROJECT_NUMBER ,FISCAL_YEAR ,FISCAL_MONTH ,FISCAL_YEAR_MONTH_NO ,JOR_GROUP ,ORIGINAL_BUDGET ,CURRENT_BUDGET ,EARNED_CURRENT_BUDGET ,EARNED_CURRENT_BUDGET_YTD ,EARNED_CURRENT_BUDGET_JTD ,ACTUAL_COST ,ACTUAL_COST_YTD ,ACTUAL_COST_JTD ,FORECAST ,FORECAST_CHANGE ,FORECAST_CHANGE_PERCENT ,ORIGINAL_BUDGET_MANHOURS ,DIRECT_ORIGINAL_BUDGET_MANHOURS ,INDIRECT_ORIGINAL_BUDGET_MANHOURS ,CURRENT_BUDGET_MANHOURS ,DIRECT_CURRENT_BUDGET_MANHOURS ,INDIRECT_CURRENT_BUDGET_MANHOURS ,EARNED_MANHOURS ,DIRECT_EARNED_MANHOURS ,INDIRECT_EARNED_MANHOURS ,EARNED_MANHOURS_YTD ,DIRECT_EARNED_MANHOURS_YTD ,INDIRECT_EARNED_MANHOURS_YTD ,EARNED_MANHOURS_JTD ,DIRECT_EARNED_MANHOURS_JTD ,INDIRECT_EARNED_MANHOURS_JTD ,MANHOURS ,DIRECT_MANHOURS ,INDIRECT_MANHOURS ,MANHOURS_YTD ,DIRECT_MANHOURS_YTD ,INDIRECT_MANHOURS_YTD ,MANHOURS_JTD ,DIRECT_MANHOURS_JTD ,INDIRECT_MANHOURS_JTD ,FORECAST_MANHOURS ,DIRECT_FORECAST_MANHOURS ,INDIRECT_FORECAST_MANHOURS ,FORECAST_MANHOURS_CHANGE ,DIRECT_FORECAST_MANHOURS_CHANGE ,INDIRECT_FORECAST_MANHOURS_CHANGE ,FORECAST_MANHOURS_CHANGE_PERCENT ,DIRECT_FORECAST_MANHOURS_CHANGE_PERCENT ,INDIRECT_FORECAST_MANHOURS_CHANGE_PERCENT ,CURRENT_ESTIMATE_MANHOURS ,DIRECT_CURRENT_ESTIMATE_MANHOURS ,INDIRECT_CURRENT_ESTIMATE_MANHOURS ,EARNED_CE_MANHOURS ,DIRECT_EARNED_CE_MANHOURS ,INDIRECT_EARNED_CE_MANHOURS ,EARNED_CE_MANHOURS_YTD ,DIRECT_EARNED_CE_MANHOURS_YTD ,INDIRECT_EARNED_CE_MANHOURS_YTD ,EARNED_CE_MANHOURS_JTD ,DIRECT_EARNED_CE_MANHOURS_JTD ,INDIRECT_EARNED_CE_MANHOURS_JTD ,PERCENT_COMPLETE ,PERCENT_COMPLETE_JTD ,UNDER_OVER ,UNDER_OVER_YTD ,UNDER_OVER_JTD ,FORECAST_UNDER_OVER ,COMPANY_CURRENCY ,USD_EXCHANGE_RATE ,USD_FORECAST ,USD_EARNED_CURRENT_BUDGET ,USD_EARNED_CURRENT_BUDGET_YTD ,USD_EARNED_CURRENT_BUDGET_JTD ,USD_ACTUAL_COST ,USD_ACTUAL_COST_YTD ,USD_ACTUAL_COST_JTD ,DWH_BEGIN_TRANS ,DWH_END_TRANS ,DWH_AUDIT_ID ) SELECT CDC.PROJECT_NUMBER ,CDC.FISCAL_YEAR ,CDC.FISCAL_MONTH ,CDC.FISCAL_YEAR_MONTH_NO ,CDC.JOR_GROUP ,CDC.ORIGINAL_BUDGET ,CDC.CURRENT_BUDGET ,CDC.EARNED_CURRENT_BUDGET ,CDC.EARNED_CURRENT_BUDGET_YTD ,CDC.EARNED_CURRENT_BUDGET_JTD ,CDC.ACTUAL_COST ,CDC.ACTUAL_COST_YTD ,CDC.ACTUAL_COST_JTD ,CDC.FORECAST ,CDC.FORECAST_CHANGE ,CDC.FORECAST_CHANGE_PERCENT ,CDC.ORIGINAL_BUDGET_MANHOURS ,CDC.DIRECT_ORIGINAL_BUDGET_MANHOURS ,CDC.INDIRECT_ORIGINAL_BUDGET_MANHOURS ,CDC.CURRENT_BUDGET_MANHOURS ,CDC.DIRECT_CURRENT_BUDGET_MANHOURS ,CDC.INDIRECT_CURRENT_BUDGET_MANHOURS ,CDC.EARNED_MANHOURS ,CDC.DIRECT_EARNED_MANHOURS ,CDC.INDIRECT_EARNED_MANHOURS ,CDC.EARNED_MANHOURS_YTD ,CDC.DIRECT_EARNED_MANHOURS_YTD ,CDC.INDIRECT_EARNED_MANHOURS_YTD ,CDC.EARNED_MANHOURS_JTD ,CDC.DIRECT_EARNED_MANHOURS_JTD ,CDC.INDIRECT_EARNED_MANHOURS_JTD ,CDC.MANHOURS ,CDC.DIRECT_MANHOURS ,CDC.INDIRECT_MANHOURS ,CDC.MANHOURS_YTD ,CDC.DIRECT_MANHOURS_YTD ,CDC.INDIRECT_MANHOURS_YTD ,CDC.MANHOURS_JTD ,CDC.DIRECT_MANHOURS_JTD ,CDC.INDIRECT_MANHOURS_JTD ,CDC.FORECAST_MANHOURS ,CDC.DIRECT_FORECAST_MANHOURS ,CDC.INDIRECT_FORECAST_MANHOURS ,CDC.FORECAST_MANHOURS_CHANGE ,CDC.DIRECT_FORECAST_MANHOURS_CHANGE ,CDC.INDIRECT_FORECAST_MANHOURS_CHANGE ,CDC.FORECAST_MANHOURS_CHANGE_PERCENT ,CDC.DIRECT_FORECAST_MANHOURS_CHANGE_PERCENT ,CDC.INDIRECT_FORECAST_MANHOURS_CHANGE_PERCENT ,CDC.CURRENT_ESTIMATE_MANHOURS ,CDC.DIRECT_CURRENT_ESTIMATE_MANHOURS ,CDC.INDIRECT_CURRENT_ESTIMATE_MANHOURS ,CDC.EARNED_CE_MANHOURS ,CDC.DIRECT_EARNED_CE_MANHOURS ,CDC.INDIRECT_EARNED_CE_MANHOURS ,CDC.EARNED_CE_MANHOURS_YTD ,CDC.DIRECT_EARNED_CE_MANHOURS_YTD ,CDC.INDIRECT_EARNED_CE_MANHOURS_YTD ,CDC.EARNED_CE_MANHOURS_JTD ,CDC.DIRECT_EARNED_CE_MANHOURS_JTD ,CDC.INDIRECT_EARNED_CE_MANHOURS_JTD ,CDC.PERCENT_COMPLETE ,CDC.PERCENT_COMPLETE_JTD ,CDC.UNDER_OVER ,CDC.UNDER_OVER_YTD ,CDC.UNDER_OVER_JTD ,CDC.FORECAST_UNDER_OVER ,CDC.COMPANY_CURRENCY ,CDC.USD_EXCHANGE_RATE ,CDC.USD_FORECAST ,CDC.USD_EARNED_CURRENT_BUDGET ,CDC.USD_EARNED_CURRENT_BUDGET_YTD ,CDC.USD_EARNED_CURRENT_BUDGET_JTD ,CDC.USD_ACTUAL_COST ,CDC.USD_ACTUAL_COST_YTD ,CDC.USD_ACTUAL_COST_JTD ,STREAM_TEMP.DWH_BEGIN_TRANS ,STREAM_TEMP.DWH_END_TRANS ,STREAM_TEMP.DWH_AUDIT_ID FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_JOR_COST_RECAP_BYACCTCODE_CDC AS CDC LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.ORS_JOR_APPROVAL_INFORMATION_JOR_COST_RECAP_BYACCTCODE_STREAM_TEMP AS STREAM_TEMP ON CDC.PROJECT_NUMBER = STREAM_TEMP.PROJECT_NUMBER AND CDC.FISCAL_YEAR_MONTH_NO = STREAM_TEMP.FISCAL_YEAR_MONTH_NO WHERE INS_UPD_IND = 'I' AND CDC.PROJECT_NUMBER IS NOT NULL AND CDC.FISCAL_YEAR IS NOT NULL AND CDC.FISCAL_MONTH IS NOT NULL AND CDC.FISCAL_YEAR_MONTH_NO IS NOT NULL AND CDC.JOR_GROUP IS NOT NULL AND STREAM_TEMP.DWH_BEGIN_TRANS IS NOT NULL AND STREAM_TEMP.DWH_END_TRANS IS NOT NULL AND STREAM_TEMP.DWH_AUDIT_ID IS NOT NULL; -- <04/12/2024> "Update `INSERT` statement for `JOR_COST_RECAP_BYACCTCODE` to read `DWH_AUDIT_ID` from the temporary stream table." INSERT INTO ${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE ( PROJECT_NUMBER ,FISCAL_YEAR ,FISCAL_MONTH ,FISCAL_YEAR_MONTH_NO ,JOR_GROUP ,ORIGINAL_BUDGET ,CURRENT_BUDGET ,EARNED_CURRENT_BUDGET ,EARNED_CURRENT_BUDGET_YTD ,EARNED_CURRENT_BUDGET_JTD ,ACTUAL_COST ,ACTUAL_COST_YTD ,ACTUAL_COST_JTD ,FORECAST ,FORECAST_CHANGE ,FORECAST_CHANGE_PERCENT ,ORIGINAL_BUDGET_MANHOURS ,DIRECT_ORIGINAL_BUDGET_MANHOURS ,INDIRECT_ORIGINAL_BUDGET_MANHOURS ,CURRENT_BUDGET_MANHOURS ,DIRECT_CURRENT_BUDGET_MANHOURS ,INDIRECT_CURRENT_BUDGET_MANHOURS ,EARNED_MANHOURS ,DIRECT_EARNED_MANHOURS ,INDIRECT_EARNED_MANHOURS ,EARNED_MANHOURS_YTD ,DIRECT_EARNED_MANHOURS_YTD ,INDIRECT_EARNED_MANHOURS_YTD ,EARNED_MANHOURS_JTD ,DIRECT_EARNED_MANHOURS_JTD ,INDIRECT_EARNED_MANHOURS_JTD ,MANHOURS ,DIRECT_MANHOURS ,INDIRECT_MANHOURS ,MANHOURS_YTD ,DIRECT_MANHOURS_YTD ,INDIRECT_MANHOURS_YTD ,MANHOURS_JTD ,DIRECT_MANHOURS_JTD ,INDIRECT_MANHOURS_JTD ,FORECAST_MANHOURS ,DIRECT_FORECAST_MANHOURS ,INDIRECT_FORECAST_MANHOURS ,FORECAST_MANHOURS_CHANGE ,DIRECT_FORECAST_MANHOURS_CHANGE ,INDIRECT_FORECAST_MANHOURS_CHANGE ,FORECAST_MANHOURS_CHANGE_PERCENT ,DIRECT_FORECAST_MANHOURS_CHANGE_PERCENT ,INDIRECT_FORECAST_MANHOURS_CHANGE_PERCENT ,CURRENT_ESTIMATE_MANHOURS ,DIRECT_CURRENT_ESTIMATE_MANHOURS ,INDIRECT_CURRENT_ESTIMATE_MANHOURS ,EARNED_CE_MANHOURS ,DIRECT_EARNED_CE_MANHOURS ,INDIRECT_EARNED_CE_MANHOURS ,EARNED_CE_MANHOURS_YTD ,DIRECT_EARNED_CE_MANHOURS_YTD ,INDIRECT_EARNED_CE_MANHOURS_YTD ,EARNED_CE_MANHOURS_JTD ,DIRECT_EARNED_CE_MANHOURS_JTD ,INDIRECT_EARNED_CE_MANHOURS_JTD ,PERCENT_COMPLETE ,PERCENT_COMPLETE_JTD ,UNDER_OVER ,UNDER_OVER_YTD ,UNDER_OVER_JTD ,FORECAST_UNDER_OVER ,COMPANY_CURRENCY ,USD_EXCHANGE_RATE ,USD_FORECAST ,USD_EARNED_CURRENT_BUDGET ,USD_EARNED_CURRENT_BUDGET_YTD ,USD_EARNED_CURRENT_BUDGET_JTD ,USD_ACTUAL_COST ,USD_ACTUAL_COST_YTD ,USD_ACTUAL_COST_JTD ,DWH_AUDIT_ID ) SELECT BYACCTCODE_INSERT.PROJECT_NUMBER ,BYACCTCODE_INSERT.FISCAL_YEAR ,BYACCTCODE_INSERT.FISCAL_MONTH ,BYACCTCODE_INSERT.FISCAL_YEAR_MONTH_NO ,BYACCTCODE_INSERT.JOR_GROUP ,BYACCTCODE_INSERT.ORIGINAL_BUDGET ,BYACCTCODE_INSERT.CURRENT_BUDGET ,BYACCTCODE_INSERT.EARNED_CURRENT_BUDGET ,BYACCTCODE_INSERT.EARNED_CURRENT_BUDGET_YTD ,BYACCTCODE_INSERT.EARNED_CURRENT_BUDGET_JTD ,BYACCTCODE_INSERT.ACTUAL_COST ,BYACCTCODE_INSERT.ACTUAL_COST_YTD ,BYACCTCODE_INSERT.ACTUAL_COST_JTD ,BYACCTCODE_INSERT.FORECAST ,BYACCTCODE_INSERT.FORECAST_CHANGE ,BYACCTCODE_INSERT.FORECAST_CHANGE_PERCENT ,BYACCTCODE_INSERT.ORIGINAL_BUDGET_MANHOURS ,BYACCTCODE_INSERT.DIRECT_ORIGINAL_BUDGET_MANHOURS ,BYACCTCODE_INSERT.INDIRECT_ORIGINAL_BUDGET_MANHOURS ,BYACCTCODE_INSERT.CURRENT_BUDGET_MANHOURS ,BYACCTCODE_INSERT.DIRECT_CURRENT_BUDGET_MANHOURS ,BYACCTCODE_INSERT.INDIRECT_CURRENT_BUDGET_MANHOURS ,BYACCTCODE_INSERT.EARNED_MANHOURS ,BYACCTCODE_INSERT.DIRECT_EARNED_MANHOURS ,BYACCTCODE_INSERT.INDIRECT_EARNED_MANHOURS ,BYACCTCODE_INSERT.EARNED_MANHOURS_YTD ,BYACCTCODE_INSERT.DIRECT_EARNED_MANHOURS_YTD ,BYACCTCODE_INSERT.INDIRECT_EARNED_MANHOURS_YTD ,BYACCTCODE_INSERT.EARNED_MANHOURS_JTD ,BYACCTCODE_INSERT.DIRECT_EARNED_MANHOURS_JTD ,BYACCTCODE_INSERT.INDIRECT_EARNED_MANHOURS_JTD ,BYACCTCODE_INSERT.MANHOURS ,BYACCTCODE_INSERT.DIRECT_MANHOURS ,BYACCTCODE_INSERT.INDIRECT_MANHOURS ,BYACCTCODE_INSERT.MANHOURS_YTD ,BYACCTCODE_INSERT.DIRECT_MANHOURS_YTD ,BYACCTCODE_INSERT.INDIRECT_MANHOURS_YTD ,BYACCTCODE_INSERT.MANHOURS_JTD ,BYACCTCODE_INSERT.DIRECT_MANHOURS_JTD ,BYACCTCODE_INSERT.INDIRECT_MANHOURS_JTD ,BYACCTCODE_INSERT.FORECAST_MANHOURS ,BYACCTCODE_INSERT.DIRECT_FORECAST_MANHOURS ,BYACCTCODE_INSERT.INDIRECT_FORECAST_MANHOURS ,BYACCTCODE_INSERT.FORECAST_MANHOURS_CHANGE ,BYACCTCODE_INSERT.DIRECT_FORECAST_MANHOURS_CHANGE ,BYACCTCODE_INSERT.INDIRECT_FORECAST_MANHOURS_CHANGE ,BYACCTCODE_INSERT.FORECAST_MANHOURS_CHANGE_PERCENT ,BYACCTCODE_INSERT.DIRECT_FORECAST_MANHOURS_CHANGE_PERCENT ,BYACCTCODE_INSERT.INDIRECT_FORECAST_MANHOURS_CHANGE_PERCENT ,BYACCTCODE_INSERT.CURRENT_ESTIMATE_MANHOURS ,BYACCTCODE_INSERT.DIRECT_CURRENT_ESTIMATE_MANHOURS ,BYACCTCODE_INSERT.INDIRECT_CURRENT_ESTIMATE_MANHOURS ,BYACCTCODE_INSERT.EARNED_CE_MANHOURS ,BYACCTCODE_INSERT.DIRECT_EARNED_CE_MANHOURS ,BYACCTCODE_INSERT.INDIRECT_EARNED_CE_MANHOURS ,BYACCTCODE_INSERT.EARNED_CE_MANHOURS_YTD ,BYACCTCODE_INSERT.DIRECT_EARNED_CE_MANHOURS_YTD ,BYACCTCODE_INSERT.INDIRECT_EARNED_CE_MANHOURS_YTD ,BYACCTCODE_INSERT.EARNED_CE_MANHOURS_JTD ,BYACCTCODE_INSERT.DIRECT_EARNED_CE_MANHOURS_JTD ,BYACCTCODE_INSERT.INDIRECT_EARNED_CE_MANHOURS_JTD ,BYACCTCODE_INSERT.PERCENT_COMPLETE ,BYACCTCODE_INSERT.PERCENT_COMPLETE_JTD ,BYACCTCODE_INSERT.UNDER_OVER ,BYACCTCODE_INSERT.UNDER_OVER_YTD ,BYACCTCODE_INSERT.UNDER_OVER_JTD ,BYACCTCODE_INSERT.FORECAST_UNDER_OVER ,BYACCTCODE_INSERT.COMPANY_CURRENCY ,BYACCTCODE_INSERT.USD_EXCHANGE_RATE ,BYACCTCODE_INSERT.USD_FORECAST ,BYACCTCODE_INSERT.USD_EARNED_CURRENT_BUDGET ,BYACCTCODE_INSERT.USD_EARNED_CURRENT_BUDGET_YTD ,BYACCTCODE_INSERT.USD_EARNED_CURRENT_BUDGET_JTD ,BYACCTCODE_INSERT.USD_ACTUAL_COST ,BYACCTCODE_INSERT.USD_ACTUAL_COST_YTD ,BYACCTCODE_INSERT.USD_ACTUAL_COST_JTD ,STREAM_TEMP.DWH_AUDIT_ID FROM ${env}_ENT_INTEGRATION.SEM_DATA.VT_JOR_COST_RECAP_BYACCTCODE_INSERT AS BYACCTCODE_INSERT LEFT JOIN ${env}_ENT_INTEGRATION.SEM_DATA.ORS_JOR_APPROVAL_INFORMATION_JOR_COST_RECAP_BYACCTCODE_STREAM_TEMP AS STREAM_TEMP ON BYACCTCODE_INSERT.PROJECT_NUMBER = STREAM_TEMP.PROJECT_NUMBER AND BYACCTCODE_INSERT.FISCAL_YEAR_MONTH_NO = STREAM_TEMP.FISCAL_YEAR_MONTH_NO WHERE BYACCTCODE_INSERT.PROJECT_NUMBER IS NOT NULL AND BYACCTCODE_INSERT.FISCAL_YEAR IS NOT NULL AND BYACCTCODE_INSERT.FISCAL_MONTH IS NOT NULL AND BYACCTCODE_INSERT.FISCAL_YEAR_MONTH_NO IS NOT NULL AND BYACCTCODE_INSERT.JOR_GROUP IS NOT NULL; COMMIT; return 'Success'; EXCEPTION WHEN OTHER THEN LET LINE := SQLCODE || ': ' || SQLERRM; INSERT INTO ${env}_ENT_COMMON.AUDIT.JOB_ERRORS (DESTINATION_TABLE_NAME, DATA, ERROR_MSG, ERROR_TIMESTAMP, ERROR_RECORD_BATCH) SELECT '${env}_ENT_INTEGRATION.SEM_DATA.JOR_COST_RECAP_BYACCTCODE', OBJECT_CONSTRUCT_KEEP_NULL(*), :line, CURRENT_TIMESTAMP, UUID_STRING('fe971b24-9572-4005-b22f-351e9c09274d', CURRENT_TIMESTAMP()) FROM ${env}_ENT_INTEGRATION.SEM_DATA.SEM_DATA.VT_JOR_COST_RECAP_BYACCTCODE_INSERT; END;