60 lines
2.4 KiB
Transact-SQL
60 lines
2.4 KiB
Transact-SQL
-- SA. View for Top 5 Projects Performance (UPDATE)
|
|
USE [EnVisage]
|
|
GO
|
|
|
|
ALTER VIEW [dbo].[VW_ScenarioPseudoActuals] AS
|
|
SELECT /* M.Id, */ O.ForecastScenarioId, M.ParentID as ActualsScenarioId, M.ExpenditureCategoryId, M.WeekEndingDate, M.Quantity,
|
|
M.Cost, 0 AS IsForecast
|
|
FROM ScenarioDetail M
|
|
INNER JOIN Scenario N ON (M.ParentID = N.Id)
|
|
INNER JOIN VW_ScenarioRelations O ON (M.ParentID = O.ActualsScenarioId)
|
|
WHERE N.[Type] = 9
|
|
UNION ALL
|
|
(
|
|
SELECT /* A.Id, */ A.ParentID AS ForecastScenarioId, C.ActualsScenarioId, A.ExpenditureCategoryId, A.WeekEndingDate, A.Quantity,
|
|
A.Cost, 1 AS IsForecast
|
|
FROM ScenarioDetail A
|
|
INNER JOIN VW_ScenarioActualsReplacePoints B ON (A.ParentID = B.ForecastScenarioId)
|
|
AND (A.ExpenditureCategoryId = B.ExpenditureCategoryId)
|
|
AND (A.WeekEndingDate = B.WeekEndingDate)
|
|
INNER JOIN VW_ScenarioRelations C ON (A.ParentID = C.ForecastScenarioId)
|
|
)
|
|
GO
|
|
|
|
ALTER VIEW [dbo].[VW_ScenarioActualsTotalCost] AS
|
|
SELECT A.ForecastScenarioId, A.ActualsScenarioId, SUM(A.Cost) AS TotalCost
|
|
FROM VW_ScenarioPseudoActuals A
|
|
GROUP BY A.ForecastScenarioId, A.ActualsScenarioId
|
|
GO
|
|
|
|
ALTER VIEW [dbo].[VW_ScenarioPerformance] AS
|
|
SELECT A.ForecastScenarioId, A.ActualsScenarioId, A.ForecastScenarioType,
|
|
B.TotalCost AS ForecastTotalCost, C.TotalCost AS ActualsTotalCost,
|
|
(CASE B.TotalCost
|
|
WHEN 0 THEN NULL
|
|
ELSE ABS((B.TotalCost - C.TotalCost) / B.TotalCost)
|
|
END) AS VariationPercent
|
|
FROM VW_ScenarioRelations A
|
|
LEFT JOIN VW_ScenarioForecastTotalCost B ON (A.ForecastScenarioId = B.ForecastScenarioId)
|
|
LEFT JOIN VW_ScenarioActualsTotalCost C ON ((A.ForecastScenarioId = C.ForecastScenarioId)
|
|
AND (A.ActualsScenarioId = C.ActualsScenarioId))
|
|
GO
|
|
|
|
ALTER VIEW [dbo].[VW_ProjectPerformance] AS
|
|
SELECT A.*, C.Id AS ProjectId, C.Name AS ProjectName, B.Status, B.BUDirectCosts, B.EndDate AS ScenarioEndDate,
|
|
C.TypeId AS ProjectTypeId, D.Name AS ProjectTypeName, C.Priority AS ProjectPriority,
|
|
(B.BUDirectCosts - A.ForecastTotalCost + A.ActualsTotalCost) AS ActualsCostForecasted,
|
|
(A.ActualsTotalCost - A.ForecastTotalCost) AS ActualsCostVariation,
|
|
(B.BUDirectCosts / C.Priority) AS ProjectWeight,
|
|
E.Id AS FiscalPeriodId
|
|
FROM VW_ScenarioPerformance A
|
|
INNER JOIN Scenario B ON (A.ForecastScenarioId = B.Id)
|
|
INNER JOIN Project C ON (B.ParentId = C.Id)
|
|
INNER JOIN [Type] D ON (C.TypeId = D.Id)
|
|
INNER JOIN FiscalCalendar E ON ((B.EndDate >= E.StartDate) AND (B.EndDate <= E.EndDate))
|
|
where (B.Status = 1) AND (B.[Type] <> 9) AND (E.[Type] = 2)
|
|
GO
|
|
|
|
|
|
|