USP_KPI_MEMBERSHIP_ACTIVITY_COUNT
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@VALUE | int | INOUT | |
@ASOFDATE | datetime | IN | |
@PROGRAMID | uniqueidentifier | IN | |
@ACTIVITYCODE | tinyint | IN | |
@STARTDATE | nvarchar(50) | IN | |
@SPECIFICDATEVALUE | datetime | IN | |
@TIERCODEID | uniqueidentifier | IN | |
@LEVELID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_KPI_MEMBERSHIP_ACTIVITY_COUNT
(
@VALUE int output,
@ASOFDATE datetime,
@PROGRAMID uniqueidentifier,
@ACTIVITYCODE tinyint,
@STARTDATE nvarchar(50),
@SPECIFICDATEVALUE datetime,
@TIERCODEID uniqueidentifier,
@LEVELID uniqueidentifier
)
as
set nocount on;
declare @NEW tinyint,
@RENEW tinyint,
@UPGRADE tinyint,
@DOWNGRADE tinyint,
@DROP tinyint,
@REJOIN tinyint;
if @ACTIVITYCODE = 0 --New Memberships
begin
set @NEW = 0;
end
else if @ACTIVITYCODE = 1 --Renewals at any level
begin
set @RENEW = 1;
set @UPGRADE = 2;
set @DOWNGRADE = 3;
end
else if @ACTIVITYCODE = 2 --Renewals on the same level
begin
set @RENEW = 1;
end
else if @ACTIVITYCODE = 3 --Upgrades Only
begin
set @UPGRADE = 2;
end
else if @ACTIVITYCODE = 4 --Downgrades Only
begin
set @DOWNGRADE = 3;
end
else if @ACTIVITYCODE = 5 -- Cancelled Only
begin
set @DROP = 6;
end
else if @ACTIVITYCODE = 6 -- Rejoins Only
begin
set @REJOIN = 5;
end
--set up our starting date value
select @SPECIFICDATEVALUE = case @STARTDATE
when 0 then dbo.UFN_DATE_GETEARLIESTTIME(@SPECIFICDATEVALUE) --'Specific Date'
when 1 then dbo.UFN_DATE_THISMONTH_FIRSTDAY(@ASOFDATE,0) --'This Month'
when 2 then dbo.UFN_DATE_THISQUARTER_FIRSTDAY(@ASOFDATE,0) --'This Quarter'
when 3 then dbo.UFN_DATE_THISCALENDARYEAR_FIRSTDAY(@ASOFDATE,0) --'This Calendar Year'
when 4 then dbo.UFN_DATE_THISFISCALYEAR_FIRSTDAY(@ASOFDATE,0) --'This Fiscal Year'
when 5 then dbo.UFN_DATE_GETEARLIESTTIME(DATEADD(month, -1, @ASOFDATE))--'One Month Ago'
when 6 then dbo.UFN_DATE_GETEARLIESTTIME(DATEADD(month, -3, @ASOFDATE))--'Three Months Ago'
when 7 then dbo.UFN_DATE_GETEARLIESTTIME(DATEADD(year, -1, @ASOFDATE)) --'Twelve Months Ago'
end;
set @ASOFDATE = dbo.UFN_DATE_GETLATESTTIME(@ASOFDATE);
set @VALUE = 0;
set @VALUE = (select
count(MT1.ID)
from
dbo.MEMBERSHIPTRANSACTION MT1
inner join dbo.MEMBERSHIPLEVEL on MT1.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
where
MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID = @PROGRAMID
and
(MT1.MEMBERSHIPLEVELID = @LEVELID or @LEVELID is null)
and
(MEMBERSHIPLEVEL.TIERCODEID = @TIERCODEID or @TIERCODEID is null)
and
MT1.ACTIONCODE in (@NEW, @RENEW, @UPGRADE, @DOWNGRADE, @DROP, @REJOIN) --variables are null unless initialized above
and
MT1.TRANSACTIONDATE >= @SPECIFICDATEVALUE
and
MT1.TRANSACTIONDATE <= @ASOFDATE);
return @VALUE;