This is the query used -
SELECT DISTINCT
i.id project_int_id,
i.name project_name,
CASE WHEN LENGTH(i.name) > 16 THEN @SUBSTR@(i.name,1,16) @+@ '...' ELSE i.name END project_short_name,
r.user_id Manager_id,
r.full_name Manager_Name,
CASE WHEN i.STATUS IN (1,5,8) THEN 1 ELSE 0 END is_approved,
ProjAttr.obj_Methodology Methodology_ID,
ProjAttr.obj_request_type Project_Type_ID,
prj.is_template Is_Template,
@NVL@(PhaseMstr.Task_Code,'Undefined') Phase_ID,
@DBUSER@.CMN_TO_CHAR_FCT(CASE WHEN prj.is_template = 1 THEN (((10000 - PhaseMstr.Task_sequence) * 10)+0) ELSE (((10000 - PhaseMstr.Task_sequence) * 10)+100000) END) Phase_ID_Sort,
@NVL@(PhaseMstr.Task_Name,'Undefined') Phase_Name,
PhaseMstr.Task_Sequence Phase_Seq,
taskTable.PrStart Start_Date,
@UPPER@(i.odf_object_code) investment_code_upper,
@DBUSER@.cop_calc_finish_time_fct(taskTable.PrFinish) Finish_Date,
@DBUSER@.CMN_DATEDIFF_FCT(@DBUSER@.cop_calc_finish_fct(taskTable.PrFinish),(@DBUSER@.COP_DATE_TRUNC_FCT(taskTable.PrStart)+1)) duration_days
FROM cop_phase_rollup_v PhaseMstr
INNER JOIN inv_investments i
ON PhaseMstr.Project_Id = i.id
INNER JOIN inv_projects prj
ON prj.PrId = i.id
INNER JOIN odf_ca_project ProjAttr
ON ProjAttr.id = i.id
INNER JOIN PrTask taskTable
ON taskTable.PrId = PhaseMstr.task_Id
AND taskTable.PrProjectId = PhaseMstr.Project_Id
AND taskTable.prwbslevel = 1
LEFT OUTER JOIN prj_obs_associations assoc
ON assoc.table_name = 'SRM_PROJECTS'
AND i.id = assoc.record_id
LEFT OUTER JOIN prj_obs_units_flat flat
ON assoc.unit_id = flat.unit_id
LEFT OUTER JOIN srm_resources r
ON r.user_id = i.manager_id
WHERE i.odf_object_code = 'project'
AND i.id = @NVL@(:param_/data/id/@value,i.id)
AND i.is_active <> 0
AND prj.is_program <> 1
AND prj.is_template <> 1
AND PhaseMstr.IsTask = 0
AND PhaseMstr.ismilestone = 0
AND taskTable.PrFinish <> taskTable.PrStart
AND ((flat.branch_unit_id IS NULL) OR (flat.branch_unit_id = flat.branch_unit_id))
AND i.id in (select object_instance_id from odfsec_project_v2 where user_id = 1)
NJ