USP_DATALIST_MEMBERSHIPPROGRAM_ACTIVEMEMBERSHIPSBYLEVEL

View active memberships for each level in a membership program.

Parameters

Parameter Parameter Type Mode Description
@PROGRAMID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@FROMDATE datetime IN From
@TODATE datetime IN To
@ACTIONCODE tinyint IN
@CATEGORY nvarchar(100) INOUT

Definition

Copy


            CREATE procedure dbo.USP_DATALIST_MEMBERSHIPPROGRAM_ACTIVEMEMBERSHIPSBYLEVEL
            (
                @PROGRAMID uniqueidentifier,
                @FROMDATE datetime = null,
                @TODATE datetime = null,
                -- Since null will equate to 0 in the model, 50 = all active memberships

                @ACTIONCODE tinyint = 50,
                @CATEGORY nvarchar(100) = null output
            )
            as

                set nocount on;

                set @CATEGORY = case 
                    when @ACTIONCODE = 0 then 'New memberships'
                    when @ACTIONCODE in (1,5) then 'Renewed memberships'
                    when @ACTIONCODE = 2 then 'Upgraded memberships'
                    when @ACTIONCODE = 3 then 'Downgraded memberships'
                    when @ACTIONCODE = 4 then 'Dropped memberships'
                    when @ACTIONCODE = 50 then 'All active memberships'
                    when @ACTIONCODE = 100 then 'Lapsed memberships'
                end;

                declare @CURRENTDATE date = getdate();

                declare @TOTALPROGRAMMEMBERSHIPS integer

                set @FROMDATE = dbo.UFN_DATE_GETEARLIESTTIME(@FROMDATE);
                set @TODATE = dbo.UFN_DATE_GETLATESTTIME(@TODATE);

                declare @TOTALMEMBERSHIPSBYLEVEL table(ID uniqueidentifier, TOTALMEMBERSHIPS int)


                insert into @TOTALMEMBERSHIPSBYLEVEL
                select
                    MEMBERSHIPLEVELID,
                    count(MEMBERSHIPID)
                from dbo.UFN_MEMBERSHIPPROGRAM_ACTIVITYBREAKDOWN(@PROGRAMID, @ACTIONCODE, @FROMDATE, @TODATE)
                group by MEMBERSHIPLEVELID;


                select @TOTALPROGRAMMEMBERSHIPS = sum(TOTALMEMBERSHIPS) from @TOTALMEMBERSHIPSBYLEVEL

                select
                    MEMBERSHIPLEVEL.ID,
                    MEMBERSHIPLEVEL.NAME,
                    TIERCODE.DESCRIPTION TIER,
                    TOTALMEMBERSHIPS,
                    convert(nvarchar(4), convert(integer, (100 * (convert(decimal,TOTALMEMBERSHIPS)/convert(decimal,@TOTALPROGRAMMEMBERSHIPS))))) + '%' as PERCENTOFTOTAL,
                    @ACTIONCODE,
                    MEMBERSHIPLEVEL.ID,
                    TIERCODE.ID,
                    @FROMDATE,
                    @TODATE
                from @TOTALMEMBERSHIPSBYLEVEL TOTALMEMBERSHIPSBYLEVEL
                inner join dbo.MEMBERSHIPLEVEL
                    on MEMBERSHIPLEVEL.ID = TOTALMEMBERSHIPSBYLEVEL.ID
                left join dbo.TIERCODE
                    on TIERCODE.ID = MEMBERSHIPLEVEL.TIERCODEID
                order by TOTALMEMBERSHIPS desc