CREATE OR REPLACE VIEW public."Prj_V_PersonnelManMonth" AS SELECT r."Id", r."TenantId", r."IsDeleted", p."Id" AS "ProjectId", p."ProjectNo", p."Name" AS "ProjectName", w."Id" AS "WorkPackageId", w."Code" AS "WorkPackageCode", w."Name" AS "WorkPackageName", r."Year", r."Month", make_date(r."Year", r."Month", 1) AS "PeriodDate", r."UserId", r."Rate" AS "ManMonthValue", COALESCE(u."Rate", 100)::numeric(18,4) AS "MonthlyRate", (r."Rate" * COALESCE(u."Rate", 100) / 100.0)::numeric(18,4) AS "EffectiveRate", COALESCE(pm."AvgMonthlyCost", 0)::numeric(18,4) AS "UnitCost", (COALESCE(pm."AvgMonthlyCost", 0) * r."Rate" * COALESCE(u."Rate", 100) / 10000.0)::numeric(18,4) AS "TotalCost", p."BranchId" FROM public."Prj_T_WorkPackageMonthRate" r INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = r."WorkPackageId" AND w."IsDeleted" = FALSE INNER JOIN public."Prj_T_Project" p ON p."Id" = w."ProjectId" AND p."IsDeleted" = FALSE LEFT JOIN public."Prj_T_UserMonthRate" u ON u."UserId" = r."UserId" AND u."Year" = r."Year" AND u."Month" = r."Month" AND u."TenantId" IS NOT DISTINCT FROM r."TenantId" AND u."IsDeleted" = FALSE LEFT JOIN public."Prj_T_ProjectMember" pm ON pm."ProjectId" = p."Id" AND pm."UserId" = r."UserId" AND pm."IsDeleted" = FALSE;