38 lines
2.1 KiB
MySQL
38 lines
2.1 KiB
MySQL
|
|
CREATE OR REPLACE VIEW public."Prj_V_ProjectCostSummary"
|
||
|
|
AS
|
||
|
|
SELECT
|
||
|
|
(p."Id"::text || '-' || k."Kind")::varchar(64) AS "Id",
|
||
|
|
p."TenantId", p."Id" AS "ProjectId", p."IsDeleted", k."Kind", k."SortNo",
|
||
|
|
COALESCE(mm."ManMonth", 0)::numeric(18,4) AS "ManMonth",
|
||
|
|
COALESCE(c."PersonnelCost", 0)::numeric(18,4) AS "PersonnelCost",
|
||
|
|
COALESCE(c."TravelCost", 0)::numeric(18,4) AS "TravelCost",
|
||
|
|
COALESCE(c."EquipmentCost", 0)::numeric(18,4) AS "EquipmentCost",
|
||
|
|
COALESCE(c."ConsultingCost", 0)::numeric(18,4) AS "ConsultingCost",
|
||
|
|
COALESCE(c."ServiceCost", 0)::numeric(18,4) AS "ServiceCost",
|
||
|
|
COALESCE(c."MaterialCost", 0)::numeric(18,4) AS "MaterialCost",
|
||
|
|
COALESCE(c."OtherCost", 0)::numeric(18,4) AS "OtherCost",
|
||
|
|
COALESCE(c."TotalCost", 0)::numeric(18,4) AS "TotalCost"
|
||
|
|
FROM public."Prj_T_Project" p
|
||
|
|
CROSS JOIN (VALUES ('Planned', 1), ('Actual', 2)) AS k("Kind", "SortNo")
|
||
|
|
LEFT JOIN LATERAL (
|
||
|
|
SELECT
|
||
|
|
SUM(CASE WHEN x."ResourceType" = 'Personnel' THEN x."Cost" ELSE 0 END) AS "PersonnelCost",
|
||
|
|
SUM(CASE WHEN x."ResourceType" = 'Travel' THEN x."Cost" ELSE 0 END) AS "TravelCost",
|
||
|
|
SUM(CASE WHEN x."ResourceType" = 'Equipment' THEN x."Cost" ELSE 0 END) AS "EquipmentCost",
|
||
|
|
SUM(CASE WHEN x."ResourceType" = 'Consulting' THEN x."Cost" ELSE 0 END) AS "ConsultingCost",
|
||
|
|
SUM(CASE WHEN x."ResourceType" = 'Service' THEN x."Cost" ELSE 0 END) AS "ServiceCost",
|
||
|
|
SUM(CASE WHEN x."ResourceType" = 'Material' THEN x."Cost" ELSE 0 END) AS "MaterialCost",
|
||
|
|
SUM(CASE WHEN x."ResourceType" = 'Other' THEN x."Cost" ELSE 0 END) AS "OtherCost",
|
||
|
|
SUM(x."Cost") AS "TotalCost"
|
||
|
|
FROM public."Prj_T_WorkPackageResource" x
|
||
|
|
INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = x."WorkPackageId"
|
||
|
|
WHERE w."ProjectId" = p."Id" AND x."Kind" = k."Kind"
|
||
|
|
AND x."IsDeleted" = FALSE AND w."IsDeleted" = FALSE
|
||
|
|
) c ON TRUE
|
||
|
|
LEFT JOIN LATERAL (
|
||
|
|
SELECT SUM(r."Rate") / 100.0 AS "ManMonth"
|
||
|
|
FROM public."Prj_T_WorkPackageMonthRate" r
|
||
|
|
INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = r."WorkPackageId"
|
||
|
|
WHERE w."ProjectId" = p."Id" AND r."IsDeleted" = FALSE AND w."IsDeleted" = FALSE
|
||
|
|
) mm ON TRUE;
|