USP_REPORT_DASHBOARD_ACTIVEMEMBERSHIPS_BYDATE

Parameters

Parameter Parameter Type Mode Description
@FROMDATE datetime IN
@TODATE datetime IN
@INTERVALTYPE tinyint IN

Definition

Copy

        create procedure dbo.USP_REPORT_DASHBOARD_ACTIVEMEMBERSHIPS_BYDATE
        (
            @FROMDATE datetime = null,
            @TODATE datetime = null,
            @INTERVALTYPE tinyint = 1
        )
        as
          set nocount on;

          begin        
            declare @MINDATE datetime
            select @MINDATE = min(MEMBERSHIPTRANSACTION.TRANSACTIONDATE) from dbo.MEMBERSHIPTRANSACTION

            if @FROMDATE < @MINDATE
                set @FROMDATE = @MINDATE

            if @TODATE > getdate()
                set @TODATE = getdate()

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

            select
                DATES.[DATE] as [Date],
                ACTIVEMEMBERSHIPSASOF.MembershipCount
            from dbo.UFN_CALENDARDATES(@FROMDATE, @TODATE, @INTERVALTYPE) DATES
            outer apply (
                select count(M.ID) as MembershipCount
                from dbo.MEMBERSHIP M
                    inner join dbo.UFN_MEMBERSHIP_LATESTTRANSACTIONASOF_BULK(DATES.[DATE]) MT on M.ID = MT.MEMBERSHIPID
                    inner join dbo.MEMBERSHIPPROGRAM MP on M.MEMBERSHIPPROGRAMID = MP.ID
                    inner join dbo.MEMBERSHIPLEVEL ML on MT.MEMBERSHIPLEVELID = ML.ID
                    left join dbo.UFN_MEMBERSHIP_WITHRENEWALWINDOW_GETNOLONGERACTIVEDATES() NOLONGERACTIVEDATES
                        on MT.ID = NOLONGERACTIVEDATES.MEMBERSHIPTRANSACTIONID
                where MT.ACTIONCODE <> 4
                    and (MP.PROGRAMTYPECODE in (1, 2) or NOLONGERACTIVEDATES.NOLONGERACTIVEDATE >= [DATES].[DATE])
                    and M.STATUSCODE <> 2
            ) ACTIVEMEMBERSHIPSASOF
                order by DATES.[DATE]

            end