25 lines
1.1 KiB
MySQL
25 lines
1.1 KiB
MySQL
|
|
CREATE OR REPLACE VIEW public."Prj_V_ProjectMember"
|
||
|
|
AS
|
||
|
|
SELECT
|
||
|
|
pm."Id",
|
||
|
|
COALESCE(pc."PackageCount", 0)::integer AS "PackageCount",
|
||
|
|
COALESCE(mr."ManMonthTotal", 0)::numeric(18,4) AS "ManMonthTotal",
|
||
|
|
COALESCE(mr."WorkedMonths", 0)::integer AS "WorkedMonths",
|
||
|
|
(COALESCE(mr."ManMonthTotal", 0) * COALESCE(pm."AvgMonthlyCost", 0))::numeric(18,4) AS "TotalCost"
|
||
|
|
FROM public."Prj_T_ProjectMember" pm
|
||
|
|
LEFT JOIN LATERAL (
|
||
|
|
SELECT COUNT(*) AS "PackageCount"
|
||
|
|
FROM public."Prj_T_WorkPackageMember" wm
|
||
|
|
INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = wm."WorkPackageId"
|
||
|
|
WHERE wm."UserId" = pm."UserId" AND w."ProjectId" = pm."ProjectId"
|
||
|
|
AND wm."IsDeleted" = FALSE AND w."IsDeleted" = FALSE
|
||
|
|
) pc ON TRUE
|
||
|
|
LEFT JOIN LATERAL (
|
||
|
|
SELECT SUM(r."Rate") / 100.0 AS "ManMonthTotal",
|
||
|
|
COUNT(DISTINCT r."Year" * 100 + r."Month") AS "WorkedMonths"
|
||
|
|
FROM public."Prj_T_WorkPackageMonthRate" r
|
||
|
|
INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = r."WorkPackageId"
|
||
|
|
WHERE r."UserId" = pm."UserId" AND w."ProjectId" = pm."ProjectId"
|
||
|
|
AND r."IsDeleted" = FALSE AND w."IsDeleted" = FALSE
|
||
|
|
) mr ON TRUE;
|