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