sozsoft-platform/configs/seeds/postgres/object/Prj_V_ProjectMember.sql

25 lines
1.1 KiB
MySQL
Raw Normal View History

2026-10-08 10:51:14 +00:00
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;