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

26 lines
1.1 KiB
MySQL
Raw Normal View History

2026-10-08 10:51:14 +00:00
CREATE OR ALTER VIEW [dbo].[Prj_V_ProjectMember]
AS
SELECT
pm.[Id],
ISNULL(pc.[PackageCount], 0) AS [PackageCount],
CAST(ISNULL(mr.[ManMonthTotal], 0) AS decimal(18, 4)) AS [ManMonthTotal],
ISNULL(mr.[WorkedMonths], 0) AS [WorkedMonths],
CAST(ISNULL(mr.[ManMonthTotal], 0) * ISNULL(pm.[AvgMonthlyCost], 0) AS decimal(18, 4)) AS [TotalCost]
FROM [dbo].[Prj_T_ProjectMember] pm
OUTER APPLY (
SELECT COUNT(*) AS [PackageCount]
FROM [dbo].[Prj_T_WorkPackageMember] wm
INNER JOIN [dbo].[Prj_T_WorkPackage] w ON w.[Id] = wm.[WorkPackageId]
WHERE wm.[UserId] = pm.[UserId] AND w.[ProjectId] = pm.[ProjectId]
AND wm.[IsDeleted] = 0 AND w.[IsDeleted] = 0
) pc
OUTER APPLY (
SELECT SUM(r.[Rate]) / 100.0 AS [ManMonthTotal],
COUNT(DISTINCT r.[Year] * 100 + r.[Month]) AS [WorkedMonths]
FROM [dbo].[Prj_T_WorkPackageMonthRate] r
INNER JOIN [dbo].[Prj_T_WorkPackage] w ON w.[Id] = r.[WorkPackageId]
WHERE r.[UserId] = pm.[UserId] AND w.[ProjectId] = pm.[ProjectId]
AND r.[IsDeleted] = 0 AND w.[IsDeleted] = 0
) mr
GO