38 lines
2.2 KiB
Transact-SQL
38 lines
2.2 KiB
Transact-SQL
CREATE OR ALTER VIEW [dbo].[Prj_V_ProjectCostSummary]
|
|
AS
|
|
SELECT
|
|
CAST(CONCAT(CAST(p.[Id] AS nvarchar(36)), '-', k.[Kind]) AS nvarchar(64)) AS [Id],
|
|
p.[TenantId], p.[Id] AS [ProjectId], p.[IsDeleted], k.[Kind], k.[SortNo],
|
|
CAST(ISNULL(mm.[ManMonth], 0) AS decimal(18, 4)) AS [ManMonth],
|
|
CAST(ISNULL(c.[PersonnelCost], 0) AS decimal(18, 4)) AS [PersonnelCost],
|
|
CAST(ISNULL(c.[TravelCost], 0) AS decimal(18, 4)) AS [TravelCost],
|
|
CAST(ISNULL(c.[EquipmentCost], 0) AS decimal(18, 4)) AS [EquipmentCost],
|
|
CAST(ISNULL(c.[ConsultingCost], 0) AS decimal(18, 4)) AS [ConsultingCost],
|
|
CAST(ISNULL(c.[ServiceCost], 0) AS decimal(18, 4)) AS [ServiceCost],
|
|
CAST(ISNULL(c.[MaterialCost], 0) AS decimal(18, 4)) AS [MaterialCost],
|
|
CAST(ISNULL(c.[OtherCost], 0) AS decimal(18, 4)) AS [OtherCost],
|
|
CAST(ISNULL(c.[TotalCost], 0) AS decimal(18, 4)) AS [TotalCost]
|
|
FROM [dbo].[Prj_T_Project] p
|
|
CROSS JOIN (VALUES ('Planned', 1), ('Actual', 2)) AS k([Kind], [SortNo])
|
|
OUTER APPLY (
|
|
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 [dbo].[Prj_T_WorkPackageResource] x
|
|
INNER JOIN [dbo].[Prj_T_WorkPackage] w ON w.[Id] = x.[WorkPackageId]
|
|
WHERE w.[ProjectId] = p.[Id] AND x.[Kind] = k.[Kind]
|
|
AND x.[IsDeleted] = 0 AND w.[IsDeleted] = 0
|
|
) c
|
|
OUTER APPLY (
|
|
SELECT SUM(r.[Rate]) / 100.0 AS [ManMonth]
|
|
FROM [dbo].[Prj_T_WorkPackageMonthRate] r
|
|
INNER JOIN [dbo].[Prj_T_WorkPackage] w ON w.[Id] = r.[WorkPackageId]
|
|
WHERE w.[ProjectId] = p.[Id] AND r.[IsDeleted] = 0 AND w.[IsDeleted] = 0
|
|
) mm
|
|
GO
|