ServiceManager.Report.Compliance.RiskManagement.SP.GetResidualRiskMapSets.Install (Resource)

Element properties:

TypeResource
File NameServiceManager.Report.GRC.RiskManagement.SP.GetResidualRiskMapSets.Install.sql
AccessibilityPublic

Source Code:

<Resource ID="ServiceManager.Report.Compliance.RiskManagement.SP.GetResidualRiskMapSets.Install" Accessibility="Public" FileName="ServiceManager.Report.GRC.RiskManagement.SP.GetResidualRiskMapSets.Install.sql"/>

File Content: ServiceManager.Report.GRC.RiskManagement.SP.GetResidualRiskMapSets.Install.sql

/****** Object:  StoredProcedure [dbo].[ServiceManager_Report_GRC_RiskManagement_SP_GetResidualRiskMapSets]    Script Date: 08/09/2010 22:28:00 ******/

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ServiceManager_Report_GRC_RiskManagement_SP_GetResidualRiskMapSets]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[ServiceManager_Report_GRC_RiskManagement_SP_GetResidualRiskMapSets]
GO

/****** Object: StoredProcedure [dbo].[ServiceManager_Report_GRC_RiskManagement_SP_GetResidualRiskMapSets] Script Date: 08/09/2010 22:28:00 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO



-- =============================================
-- Author: MilindMa
-- Create date: 10/9/2009
-- Last Updated: 10/29/2009
-- Last Updated by: MilindMa
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[ServiceManager_Report_GRC_RiskManagement_SP_GetResidualRiskMapSets]
@StartDate Datetime,
@EndDate Datetime,
@ProgramId int = null,
@AssignedTo int = null,
@OwnedBy int = null,
@StatusId nvarchar(max) = '-1'
AS
BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @xAxisMin tinyint, @xAxisMax tinyint, @xAxisMid tinyint, @yAxisMin tinyint, @yAxisMax tinyint, @yAxisMid tinyint;

DECLARE @Error int

SELECT @xAxisMin = xAxisMin, @xAxisMax = xAxisMax, @xAxisMid = xAxisMid, @yAxisMin = yAxisMin, @yAxisMax = yAxisMax, @yAxisMid = yAxisMid
FROM ufnGetResidualRiskMapAxisData()

DECLARE @residualRiskStatus TABLE (value nvarchar(256))
INSERT @residualRiskStatus (value)
SELECT * FROM dbo.fn_CSVToTableInt(@StatusId)

IF OBJECT_ID(N'tempdb..#RsuRiskCATData', N'U') IS NOT NULL
BEGIN
DROP TABLE #RsuRiskCATData
END;

WITH RsuRiskCATData (ProgramDimKey, CategoryDimKey)
AS
(
SELECT ProgramDimKey, ProgramHasCategory_CategoryDimKey AS CategoryDimKey
FROM ProgramHasCategoriesFactvw
WHERE (0 = @ProgramId OR ProgramDimKey = @ProgramId)
UNION ALL
SELECT CD.ProgramDimKey, CC.CategoryContainsCategory_CategoryDimKey as CategoryDimKey
FROM CategoryContainsCategoryFactvw AS CC
INNER JOIN RsuRiskCATData AS CD
ON CC.CategoryDimKey = CD.CategoryDimKey
)
SELECT ProgramDimKey, CategoryDimKey INTO #RsuRiskCATData FROM RsuRiskCATData;

IF OBJECT_ID(N'tempdb..#RsuRiskDimKey', N'U') IS NOT NULL
BEGIN
DROP TABLE #RsuRiskDimKey
END;

WITH RsuRiskDimKey (CategoryDimKey, RiskDimKey)
AS
(
SELECT A.CategoryDimKey, A.CategoryContainsRisk_RiskDimKey AS RiskDimKey
FROM CategoryContainsRiskFactvw A
INNER JOIN #RsuRiskCATData B
ON A.CategoryDimKey = B.CategoryDimKey
UNION ALL
SELECT RD.CategoryDimKey, RR.PolicyItemContainsCompliancePolicyItem_RiskDimKey AS RiskDimKey
FROM RiskContainsRiskFactvw AS RR
INNER JOIN RsuRiskDimKey AS RD
ON RR.RiskDimKey = RD.RiskDimKey
)
SELECT CategoryDimKey, RiskDimKey into #RsuRiskDimKey FROM RsuRiskDimKey;

IF OBJECT_ID(N'tempdb..#RRPHasRisk', N'U') IS NOT NULL
BEGIN
DROP TABLE #RRPHasRisk
END;

WITH RRPHasRisk (ProgramDimKey, RiskDimKey)
AS
(
SELECT ProgramDimKey, PolicyItemRelatesToCompliancePolicyItem_RiskDimKey AS RiskDimKey
FROM ProgramContainsRisksFactvw
WHERE (0 = @ProgramId OR ProgramDimKey = @ProgramId)
UNION ALL
SELECT RD.RiskDimKey, RR.PolicyItemContainsCompliancePolicyItem_RiskDimKey AS RiskDimKey
FROM RiskContainsRiskFactvw AS RR
INNER JOIN RRPHasRisk AS RD
ON RR.RiskDimKey = RD.RiskDimKey
)
SELECT ProgramDimKey, RiskDimKey into #RRPHasRisk FROM RRPHasRisk;

IF OBJECT_ID(N'tempdb..#RsuRiskMapRisks', N'U') IS NOT NULL
BEGIN
DROP TABLE #RsuRiskMapRisks
END;

CREATE TABLE #RsuRiskMapRisks
(Risk int)

INSERT INTO #RsuRiskMapRisks
SELECT DISTINCT RiskDimKey
FROM #RsuRiskDimKey
UNION
SELECT DISTINCT RiskDimKey
FROM #RRPHasRisk

CREATE TABLE #ResidualRiskMapReportSets
(Id int
, x1 tinyint
, y1 tinyint
, x2 tinyint
, y2 tinyint
, x3 tinyint
, y3 tinyint
, x4 tinyint
, y4 tinyint
)

IF @ProgramId = 0 AND @AssignedTo = 0
BEGIN
INSERT #ResidualRiskMapReportSets
-- For First set we will use x=Min to Mid an y= Min to Mid
SELECT Rd.RiskDimKey
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x1
, RC.RiskControlLevelValue AS y1
, null AS x2, null AS y2
, null AS x3, null AS y3
, null AS x4, null AS y4
FROM RiskDimvw RD

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) BETWEEN @yAxisMin AND @yAxisMid

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

WHERE (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint)) BETWEEN @xAxisMin AND @xAxisMid
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL

UNION

-- For Second set we will use x=Mid to Max an y= Min to Mid
SELECT Rd.RiskDimKey
, null AS x1, null AS y1
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x2
, RC.RiskControlLevelValue AS y2
, null AS x3, null AS y3
, null AS x4, null AS y4
FROM RiskDimvw RD

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) >= @yAxisMin
AND CAST(RC.RiskControlLevelValue AS tinyint) < @yAxisMid

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

WHERE CAST (RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint) > @xAxisMid
AND CAST (RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint) <= @xAxisMax
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL

UNION

-- For Third set we will use x=Mid to Max, y=Mid to Max
SELECT Rd.RiskDimKey
, null AS x1, null AS y1
, null AS x2, null AS y2
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x3
, RC.RiskControlLevelValue AS y3
, null AS x4, null AS y4
FROM RiskDimvw RD

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) BETWEEN @yAxisMid AND @yAxisMax

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

WHERE CAST (RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint) BETWEEN @xAxisMid AND @xAxisMax
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL

UNION

-- For Fourth set we will use x=Mid to Max, y=Mid to Max
SELECT Rd.RiskDimKey
, null AS x1, null AS y1
, null AS x2, null AS y2
, null AS x3, null AS y3
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x4
, RC.RiskControlLevelValue AS y4
FROM RiskDimvw RD

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) > @yAxisMid
AND CAST(RC.RiskControlLevelValue AS tinyint) <= @yAxisMax

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

WHERE (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) >= @xAxisMin
AND (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) < @xAxisMid
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL
END
ELSE IF @ProgramId = 0 AND @AssignedTo != 0
BEGIN
INSERT #ResidualRiskMapReportSets
-- For First set we will use x=Min to Mid an y= Min to Mid
SELECT Rd.RiskDimKey
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x1
, RC.RiskControlLevelValue AS y1
, null AS x2, null AS y2
, null AS x3, null AS y3
, null AS x4, null AS y4
FROM RiskDimvw RD

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) BETWEEN @yAxisMin AND @yAxisMid

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

JOIN RiskAssignedToUserFactvw RATU
ON RATU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw AssignedTo
ON AssignedTo.UserDimKey = RATU.PolicyItemAssignedTo_UserDimKey
AND AssignedTo.UserDimKey = @AssignedTo

WHERE (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint)) BETWEEN @xAxisMin AND @xAxisMid
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL

UNION

-- For Second set we will use x=Mid to Max an y= Min to Mid
SELECT Rd.RiskDimKey
, null AS x1, null AS y1
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x2
, RC.RiskControlLevelValue AS y2
, null AS x3, null AS y3
, null AS x4, null AS y4
FROM RiskDimvw RD

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) >= @yAxisMin
AND CAST(RC.RiskControlLevelValue AS tinyint) < @yAxisMid

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

JOIN RiskAssignedToUserFactvw RATU
ON RATU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw AssignedTo
ON AssignedTo.UserDimKey = RATU.PolicyItemAssignedTo_UserDimKey
AND AssignedTo.UserDimKey = @AssignedTo

WHERE CAST (RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint) > @xAxisMid
AND CAST (RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint) <= @xAxisMax
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL
UNION

-- For Third set we will use x=Mid to Max, y=Mid to Max
SELECT Rd.RiskDimKey
, null AS x1, null AS y1
, null AS x2, null AS y2
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x3
, RC.RiskControlLevelValue AS y3
, null AS x4, null AS y4
FROM RiskDimvw RD

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) BETWEEN @yAxisMid AND @yAxisMax

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

JOIN RiskAssignedToUserFactvw RATU
ON RATU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw AssignedTo
ON AssignedTo.UserDimKey = RATU.PolicyItemAssignedTo_UserDimKey
AND AssignedTo.UserDimKey = @AssignedTo

WHERE CAST (RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint) BETWEEN @xAxisMid AND @xAxisMax
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL

UNION

-- For Fourth set we will use x=Mid to Max, y=Mid to Max
SELECT Rd.RiskDimKey
, null AS x1, null AS y1
, null AS x2, null AS y2
, null AS x3, null AS y3
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x4
, RC.RiskControlLevelValue AS y4
FROM RiskDimvw RD

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) > @yAxisMid
AND CAST(RC.RiskControlLevelValue AS tinyint) <= @yAxisMax

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

JOIN RiskAssignedToUserFactvw RATU
ON RATU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw AssignedTo
ON AssignedTo.UserDimKey = RATU.PolicyItemAssignedTo_UserDimKey
AND AssignedTo.UserDimKey = @AssignedTo

WHERE (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) >= @xAxisMin
AND (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) < @xAxisMid
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL
END
ELSE IF @ProgramId != 0 AND @AssignedTo != 0
BEGIN
INSERT #ResidualRiskMapReportSets
-- For First set we will use x=Min to Mid an y= Min to Mid
SELECT Rd.RiskDimKey
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x1
, RC.RiskControlLevelValue AS y1
, null AS x2, null AS y2
, null AS x3, null AS y3
, null AS x4, null AS y4
FROM RiskDimvw RD

JOIN #RsuRiskMapRisks IRMRS
ON RD.RiskDimKey = IRMRS.Risk

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) BETWEEN @yAxisMin AND @yAxisMid

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

JOIN RiskAssignedToUserFactvw RATU
ON RATU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw AssignedTo
ON AssignedTo.UserDimKey = RATU.PolicyItemAssignedTo_UserDimKey
AND AssignedTo.UserDimKey = @AssignedTo

WHERE (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint)) BETWEEN @xAxisMin AND @xAxisMid
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL

UNION

-- For Second set we will use x=Mid to Max an y= Min to Mid
SELECT Rd.RiskDimKey
, null AS x1, null AS y1
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x2
, RC.RiskControlLevelValue AS y2
, null AS x3, null AS y3
, null AS x4, null AS y4
FROM RiskDimvw RD

JOIN #RsuRiskMapRisks IRMRS
ON RD.RiskDimKey = IRMRS.Risk

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) >= @yAxisMin
AND CAST(RC.RiskControlLevelValue AS tinyint) < @yAxisMid

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

JOIN RiskAssignedToUserFactvw RATU
ON RATU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw AssignedTo
ON AssignedTo.UserDimKey = RATU.PolicyItemAssignedTo_UserDimKey
AND AssignedTo.UserDimKey = @AssignedTo

WHERE CAST (RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint) > @xAxisMid
AND CAST (RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint) <= @xAxisMax
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL

UNION

-- For Third set we will use x=Mid to Max, y=Mid to Max
SELECT Rd.RiskDimKey
, null AS x1, null AS y1
, null AS x2, null AS y2
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x3
, RC.RiskControlLevelValue AS y3
, null AS x4, null AS y4
FROM RiskDimvw RD

JOIN #RsuRiskMapRisks IRMRS
ON RD.RiskDimKey = IRMRS.Risk

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) BETWEEN @yAxisMid AND @yAxisMax

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

JOIN RiskAssignedToUserFactvw RATU
ON RATU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw AssignedTo
ON AssignedTo.UserDimKey = RATU.PolicyItemAssignedTo_UserDimKey
AND AssignedTo.UserDimKey = @AssignedTo

WHERE CAST (RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint) BETWEEN @xAxisMid AND @xAxisMax
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL

UNION

-- For Fourth set we will use x=Mid to Max, y=Mid to Max
SELECT Rd.RiskDimKey
, null AS x1, null AS y1
, null AS x2, null AS y2
, null AS x3, null AS y3
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x4
, RC.RiskControlLevelValue AS y4
FROM RiskDimvw RD

JOIN #RsuRiskMapRisks IRMRS
ON RD.RiskDimKey = IRMRS.Risk

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) > @yAxisMid
AND CAST(RC.RiskControlLevelValue AS tinyint) <= @yAxisMax

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

JOIN RiskAssignedToUserFactvw RATU
ON RATU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw AssignedTo
ON AssignedTo.UserDimKey = RATU.PolicyItemAssignedTo_UserDimKey
AND AssignedTo.UserDimKey = @AssignedTo

WHERE (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) >= @xAxisMin
AND (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) < @xAxisMid
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL
END
ELSE IF @ProgramId != 0 AND @AssignedTo = 0
BEGIN
INSERT #ResidualRiskMapReportSets
-- For First set we will use x=Min to Mid an y= Min to Mid
SELECT Rd.RiskDimKey
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x1
, RC.RiskControlLevelValue AS y1
, null AS x2, null AS y2
, null AS x3, null AS y3
, null AS x4, null AS y4
FROM RiskDimvw RD

JOIN #RsuRiskMapRisks IRMRS
ON RD.RiskDimKey = IRMRS.Risk

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) BETWEEN @yAxisMin AND @yAxisMid

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

WHERE (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint)) BETWEEN @xAxisMin AND @xAxisMid
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL

UNION

-- For Second set we will use x=Mid to Max an y= Min to Mid
SELECT Rd.RiskDimKey
, null AS x1, null AS y1
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x2
, RC.RiskControlLevelValue AS y2
, null AS x3, null AS y3
, null AS x4, null AS y4
FROM RiskDimvw RD

JOIN #RsuRiskMapRisks IRMRS
ON RD.RiskDimKey = IRMRS.Risk

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) >= @yAxisMin
AND CAST(RC.RiskControlLevelValue AS tinyint) < @yAxisMid

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

WHERE CAST (RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint) > @xAxisMid
AND CAST (RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint) <= @xAxisMax
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL

UNION

-- For Third set we will use x=Mid to Max, y=Mid to Max
SELECT Rd.RiskDimKey
, null AS x1, null AS y1
, null AS x2, null AS y2
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x3
, RC.RiskControlLevelValue AS y3
, null AS x4, null AS y4
FROM RiskDimvw RD

JOIN #RsuRiskMapRisks IRMRS
ON RD.RiskDimKey = IRMRS.Risk

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) BETWEEN @yAxisMid AND @yAxisMax

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

WHERE CAST (RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikelihoodValue AS tinyint) BETWEEN @xAxisMid AND @xAxisMax
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL

UNION

-- For Fourth set we will use x=Mid to Max, y=Mid to Max
SELECT Rd.RiskDimKey
, null AS x1, null AS y1
, null AS x2, null AS y2
, null AS x3, null AS y3
, (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) AS x4
, RC.RiskControlLevelValue AS y4
FROM RiskDimvw RD

JOIN #RsuRiskMapRisks IRMRS
ON RD.RiskDimKey = IRMRS.Risk

JOIN RiskImpactvw RI
ON RD.Impact_RiskImpactId = RI.RiskImpactID
AND ((-1 IN (Select value from @residualRiskStatus)) OR (RD.Status_RiskStatusId IN (Select value from @residualRiskStatus)))
AND DATEDIFF(DAY, CreatedDate, @StartDate) <= 0
AND DATEDIFF(DAY, CreatedDate, @EndDate) >=0

JOIN RiskLikelihoodvw RP
ON RD.Likelihood_RiskLikelihoodId = RP.RiskLikeLiHoodId

JOIN RiskControlLevelvw RC
ON RD.ControlLevel_RiskControlLevelId = RC.RiskControlLevelId
AND CAST(RC.RiskControlLevelValue AS tinyint) > @yAxisMid
AND CAST(RC.RiskControlLevelValue AS tinyint) <= @yAxisMax

JOIN RiskOwnedByUserFactvw ROBU
ON ROBU.RiskDimKey = RD.RiskDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = ROBU.ConfigItemOwnedByUser_UserDimKey
AND (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)

WHERE (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) >= @xAxisMin
AND (CAST(RI.RiskImpactValue AS tinyint) * CAST(RP.RiskLikeLihoodValue AS tinyint)) < @xAxisMid
AND RI.ParentId IS NOT NULL
AND RC.ParentId IS NOT NULL
END

SELECT ROW_NUMBER() OVER (ORDER BY Id) AS RowNum, Id, x1, y1, x2, y2, x3, y3, x4, y4
FROM #ResidualRiskMapReportSets

QuitError:
RETURN @Error

END

GO


GRANT EXECUTE ON dbo.ServiceManager_Report_GRC_RiskManagement_SP_GetResidualRiskMapSets TO reportuser
GO