USP_SEARCH_KPIINSTANCE
Searches for a KPI instance.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@NAME | nvarchar(255) | IN | Name |
@MAXROWS | smallint | IN | Input parameter indicating the maximum number of rows to return. |
@CATEGORY | nvarchar(200) | IN | Category |
@TYPEID | uniqueidentifier | IN | Type |
@GOALSTATUS | int | IN | Goal status |
Definition
Copy
CREATE procedure dbo.USP_SEARCH_KPIINSTANCE(
@NAME nvarchar(255) = null,
@MAXROWS smallint,
@CATEGORY nvarchar(200) = null,
@TYPEID uniqueidentifier = null,
@GOALSTATUS int = null
)
as
set nocount on;
set @NAME = dbo.UFN_SEARCHCRITERIA_GETLIKEPARAMETERVALUE(@NAME, 0, null);
set @CATEGORY = dbo.UFN_SEARCHCRITERIA_GETLIKEPARAMETERVALUE(@CATEGORY, 0, null);
select top(@MAXROWS)
KPIINSTANCE.ID,
KPIINSTANCE.NAME,
KPICATALOG.NAME KPITYPE
from dbo.KPIINSTANCE
left join dbo.KPICATALOG on KPIINSTANCE.KPICATALOGID = KPICATALOG.ID
outer apply (
select top (1) [VALUE]
from dbo.[KPIINSTANCEHISTORY]
where [KPIINSTANCEID] = [KPIINSTANCE].[ID]
order by [ASOFDATE] desc
) as [HISTORY]
where
(@NAME is null
or KPIINSTANCE.NAME like @NAME
)
and(@CATEGORY is null
or KPICATALOG.UIFOLDER like @CATEGORY
)
and(@TYPEID is null
or KPICATALOG.ID = @TYPEID
)
and(@GOALSTATUS is null
or(
@GOALSTATUS = 0 --Red
and(
([KPIINSTANCE].[GOALAIMTYPECODE] = 0 --Up
and [HISTORY].[VALUE] < [KPIINSTANCE].[GOALUPWARDLOWVALUE]
)
or([KPIINSTANCE].[GOALAIMTYPECODE] = 1 --Down
and [HISTORY].[VALUE] > [KPIINSTANCE].[GOALDOWNWARDHIGHVALUE]
)
)
)
or(
@GOALSTATUS = 1 --Yellow
and(
([KPIINSTANCE].[GOALAIMTYPECODE] = 0 --Up
and [HISTORY].[VALUE] >= [KPIINSTANCE].[GOALUPWARDLOWVALUE]
and [HISTORY].[VALUE] < [KPIINSTANCE].[GOALUPWARDMIDVALUE]
)
or([KPIINSTANCE].[GOALAIMTYPECODE] = 1 --Down
and [HISTORY].[VALUE] <= [KPIINSTANCE].[GOALDOWNWARDHIGHVALUE]
and [HISTORY].[VALUE] > [KPIINSTANCE].[GOALDOWNWARDMIDVALUE]
)
)
)
or(
@GOALSTATUS = 2 --Green
and(
([KPIINSTANCE].[GOALAIMTYPECODE] = 0 --Up
and [HISTORY].[VALUE] >= [KPIINSTANCE].[GOALUPWARDMIDVALUE]
)
or([KPIINSTANCE].[GOALAIMTYPECODE] = 1 --Down
and [HISTORY].[VALUE] <= [KPIINSTANCE].[GOALDOWNWARDMIDVALUE]
)
)
)
)
order by KPIINSTANCE.NAME;