-- Drop stored procedure if it already exists
IF EXISTS (
SELECT *
FROM INFORMATION_SCHEMA.ROUTINES
WHERE SPECIFIC_SCHEMA = N'dbo'
AND SPECIFIC_NAME = N'ServiceManager_Report_ChangeManagement_SP_GetChangeManagementKPITrendData_Install'
)
DROP PROCEDURE dbo.ServiceManager_Report_ChangeManagement_SP_GetChangeManagementKPITrendData_Install
GO
SELECT DISTINCT
C.ActualStartDate,
C.ActualEndDate,
C.Category,
C.CreatedDate,
ISNULL(StatusDS.DisplayName, StatusEnum.ChangeStatusValue) as Status,
StatusEnum.ID AS StatusValue,
Count(ContainsActivity.ActivityDimKey) as NumberOfActivities,
Sum(CASE WHEN ContainsActivity.Status_ActivityStatusId = 6 THEN 1 ELSE 0 END) as NumberOfFailedActivities,
Sum(CASE WHEN ContainsActivity.Status_ActivityStatusId = 1 THEN 1 ELSE 0 END) as NumberOfCompletedActivities
FROM
dbo.ChangeRequestDimvw C
INNER JOIN
(
Select
DD.DateKey,
DD.CalendarDate,
DailyAggregate = DD.CalendarDate,
WeeklyAggregate = DATEADD(DAY, (DD.WeekNumberInYear - 1)*7, CONVERT(nvarchar(4),DD.YearNumber) + '-1-1 00:00:00'),
MonthlyAggregate = DATEADD(MONTH, DD.MonthNumber - 1, CONVERT(nvarchar(4),DD.YearNumber) + '-1-1 00:00:00'),
QuarterlyAggregate = DATEADD(MONTH, (((DD.MonthNumber-1)/3) *3), CONVERT(nvarchar(4),DD.YearNumber) + '-1-1 00:00:00'),
YearlyAggregate = CONVERT(datetime, CONVERT(nvarchar(4),DD.YearNumber) + '-1-1 00:00:00')
from DateDim DD
) AggregatedDateDim
ON AggregatedDateDim.DateKey = CONVERT(nvarchar(8), C.CreatedDate, 112)
INNER JOIN dbo.WorkItemDimvw WI ON (WI.EntityDimKey = C.EntityDimKey)
left JOIN dbo.WorkItemAssignedToUserFactvw WIATU
ON (WI.WorkItemDimKey = WIATU.WorkItemDimKey)
and WIATU.DeletedDate IS NULL
and WIATU.DateKey >= CONVERT(nvarchar(8), WI.CreatedDate, 112)
left JOIN dbo.UserDimvw AS AssignedToUserDim
ON WIATU.WorkItemAssignedToUser_UserDimKey = AssignedToUserDim.UserDimKey
left JOIN dbo.WorkItemCreatedByUserFactvw WICBU
ON (WI.WorkItemDimKey = WICBU.WorkItemDimKey)
AND WICBU.DeletedDate IS NULL
AND WICBU.DateKey >= CONVERT(nvarchar(8), WI.CreatedDate, 112)
left JOIN dbo.UserDimvw AS CreatedByUserDim
ON WICBU.WorkItemCreatedByUser_UserDimKey = CreatedByUserDim.UserDimKey
left outer join dbo.ChangeStatusvw AS StatusEnum
ON StatusEnum.ChangeStatusId = C.Status_ChangeStatusId
left JOIN dbo.WorkItemContainsActivityFactvw AS WICAF
ON WI.WorkItemDimKey = WICAF.WorkItemDimKey
AND WICAF.DeletedDate IS NULL
AND WICAF.DateKey >= CONVERT(nvarchar(8), WI.CreatedDate, 112)
left JOIN dbo.ActivityDimvw AS ContainsActivity
ON WICAF.WorkItemContainsActivity_ActivityDimKey = ContainsActivity.ActivityDimKey
left JOIN dbo.EntityManagedTypeFactvw AS EMTF
ON ContainsActivity.EntityDimKey = EMTF.EntityDimKey
AND EMTF.DeletedDate IS NULL
left JOIN dbo.ManagedTypeDim AS ActivityType
ON EMTF.ManagedTypeDimKey = ActivityType.ManagedTypeDimKey
left JOIN dbo.DisplayStringDimvw StatusDS
ON StatusEnum.EnumTypeId=StatusDS.BaseManagedEntityId
AND StatusDS.LanguageCode = @LanguageCode
WHERE
(@StartDate <= @EndDate) AND
(
(@ID IS NULL) OR (C.Id IN (Select value from @tableID))
) AND
((C.CreatedDate >= @StartDate) AND (C.CreatedDate < @EndDate)) AND
((@ScheduledStartFrom IS NULL) OR (C.ScheduledStartDate >= @ScheduledStartFrom)) AND
((@ScheduledStartTo IS NULL) OR (C.ScheduledStartDate < @ScheduledStartTo)) AND
((@ScheduledEndFrom IS NULL) OR (C.ScheduledEndDate >= @ScheduledEndFrom)) AND
((@ScheduledEndTo IS NULL) OR (C.ScheduledEndDate < @ScheduledEndTo)) AND
((@ActualStartFrom IS NULL) OR (C.ActualStartDate >= @ActualStartFrom)) AND
((@ActualStartTo IS NULL) OR (C.ActualStartDate < @ActualStartTo))AND
((@ActualEndFrom IS NULL) OR (C.ActualEndDate >= @ActualEndFrom)) AND
((@ActualEndTo IS NULL) OR (C.ActualEndDate < @ActualEndTo)) AND
((@AssignedTo = 0) OR @AssignedTo = AssignedToUserDim.UserDimKey) AND
((@CreatedBy = 0) OR @CreatedBy = CreatedByUserDim.UserDimKey) AND
((@ActivityID IS NULL) OR (ContainsActivity.Id IN (Select value from @tableActivityID))) AND
((@ActivityType IS NULL) OR (@ActivityType = ActivityType.TypeName)) AND
((@ActivityName IS NULL) OR (ContainsActivity.Title LIKE @ActivityName)) AND
((-1 IN (Select value from @tableStatus)) OR (C.Status_ChangeStatusId IN (Select value from @tableStatus))) AND
((-1 IN (Select value from @tablePriority)) OR (C.Priority_ChangePriorityId IN (Select value from @tablePriority))) AND
((-1 IN (Select value from @tableImpact)) OR (C.Impact_ChangeImpactId IN (Select value from @tableImpact))) AND
((-1 IN (Select value from @tableRisk)) OR (C.Risk_ChangeRiskId IN (Select value from @tableRisk))) AND
((-1 IN (Select value from @tableCategory)) OR (C.Category_ChangeCategoryId IN (Select value from @tableCategory))) AND
((-1 IN (Select value from @tableActivityStatus)) OR (ContainsActivity.Status_ActivityStatusId IN (Select value from @tableActivityStatus))) AND
((-1 IN (Select value from @tableActivityStage)) OR (ContainsActivity.Stage_ActivityStageId IN (Select value from @tableActivityStage))) AND
((-1 IN (Select value from @tableChangeResult)) OR (C.ImplementationResults_ChangeImplementationResultsId IN (Select value from @tableChangeResult))) AND
((@CIName = 0)
OR
(WI.WorkItemDimKey IN
(
SELECT DISTINCT
AICFact.WorkItemDimKey
FROM
dbo.WorkItemAboutConfigItemFactvw AICFact
INNER JOIN dbo.ConfigItemDimvw CI
ON AICFact.WorkItemAboutConfigItem_ConfigItemDimKey = CI.ConfigItemDimKey
WHERE
((@CIName =0) OR (CI.ConfigItemDimKey = @CIName))
)
))
Group By
C.ChangeRequestDimKey,
WI.WorkItemDimKey,
C.CreatedDate,
C.ScheduledStartDate,
C.ScheduledEndDate,
C.ActualStartDate,
C.ActualEndDate,
C.Category,
ISNULL(StatusDS.DisplayName, StatusEnum.ChangeStatusValue),
StatusEnum.ID
SET @Error = @@ERROR
QuitError:
RETURN @Error
END
GO
GRANT EXECUTE ON dbo.ServiceManager_Report_ChangeManagement_SP_GetChangeManagementKPITrendData_Install TO reportuser
GO