UFN_MEMBERSHIPTRANSACTION_GETMEMBERSHIPCOUNT_BYASOFDATE
Returns a count of membership for a particular program and as of date.
Return
Return Type |
---|
int |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ASOFDATE | datetime | IN | |
@PROGRAMID | uniqueidentifier | IN | |
@SORTID | uniqueidentifier | IN | |
@GROUPBY | tinyint | IN |
Definition
Copy
-- NOTE: Logic from here has been in-lined in USP_DATALIST_MEMBERSHIPCOUNTREPORT so any changes
-- here should also be made to that SP
CREATE function dbo.UFN_MEMBERSHIPTRANSACTION_GETMEMBERSHIPCOUNT_BYASOFDATE(
@ASOFDATE datetime,
@PROGRAMID uniqueidentifier,
@SORTID uniqueidentifier,
@GROUPBY tinyint)
returns int
as
begin
declare @VALUE int = 0;
select
@VALUE = count(M.ID)
from
dbo.MEMBERSHIPTRANSACTION as MT
inner join dbo.MEMBERSHIP as M on MT.MEMBERSHIPID = M.ID
where
M.MEMBERSHIPPROGRAMID = @PROGRAMID
and
MT.ACTIONCODE <> 4
and
MT.TRANSACTIONDATE <= @ASOFDATE
and
MT.ID = (select top 1 ID
from dbo.MEMBERSHIPTRANSACTION MT2
where MT2.MEMBERSHIPID = MT.MEMBERSHIPID
and MT2.TRANSACTIONDATE <= @ASOFDATE
order by MT2.TRANSACTIONDATE desc, MT2.DATEADDED desc)
and
(
( @GROUPBY = 1 --SORT BY LEVEL
and
MT.MEMBERSHIPLEVELID = @SORTID
)
or
( @GROUPBY = 0 and --SORT BY TYPE
(
(@SORTID = MT.MEMBERSHIPLEVELTYPECODEID and @SORTID is not null)
or
(@SORTID is null and MT.MEMBERSHIPLEVELTYPECODEID is null)
)
)
)
and
(
MT.EXPIRATIONDATE >= @ASOFDATE
or --check for lifetime membership
( select MLT.TERMCODE
from dbo.MEMBERSHIPLEVELTERM as MLT
where MLT.ID = MT.MEMBERSHIPLEVELTERMID ) = 6
);
return @value;
end