USP_DATALIST_MEMBERSHIPREVENUE

Parameters

Parameter Parameter Type Mode Description
@CONTEXTID uniqueidentifier IN
@DATERANGE tinyint IN
@STARTDATE1DIMID int IN
@ENDDATE1DIMID int IN
@STARTDATE2DIMID int IN
@ENDDATE2DIMID int IN
@DATERANGE1 nvarchar(50) INOUT
@DATERANGE2 nvarchar(50) INOUT

Definition

Copy


create procedure BBDW.USP_DATALIST_MEMBERSHIPREVENUE(
  @CONTEXTID uniqueidentifier, 
  @DATERANGE tinyint
  @STARTDATE1DIMID int
  @ENDDATE1DIMID int
  @STARTDATE2DIMID int
  @ENDDATE2DIMID int,
  @DATERANGE1 nvarchar(50) out,
  @DATERANGE2 nvarchar(50) out
  )
as
    set nocount on;

if @DATERANGE = 0 

  begin
    set @DATERANGE1 = (select top 1 [CALENDARMONTHYEARNAME] from BBDW.[DIM_DATE] where [DATEDIMID] = @STARTDATE1DIMID)
    set @DATERANGE2 = (select top 1 [CALENDARMONTHYEARNAME] from BBDW.[DIM_DATE] where [DATEDIMID] = @STARTDATE2DIMID)
  end;

if @DATERANGE = 1

  begin
    set @DATERANGE1 = (select top 1 [CALENDARQUARTERYEARNAME] from BBDW.[DIM_DATE] where [DATEDIMID] = @STARTDATE1DIMID)
    set @DATERANGE2 = (select top 1 [CALENDARQUARTERYEARNAME] from BBDW.[DIM_DATE] where [DATEDIMID] = @STARTDATE2DIMID)
  end;

if @DATERANGE = 2

  begin
    set @DATERANGE1 = left(cast(@STARTDATE1DIMID as char(8)),4)
    set @DATERANGE2 = left(cast(@STARTDATE2DIMID as char(8)),4)
  end;

with 
  [DATERANGE1] as 
      (select 
            REV1.[MEMBERSHIPLEVEL],
            REV1.[MEMBERSHIPLEVELSYSTEMID],
            isnull(sum(REV1.[AMOUNT]), 0) as [TOTALREVENUE]
        from
            (--Membership payments - One-off

            select coalesce(SUM(FR2.REVENUEAPPLICATIONAMOUNT), 0) as AMOUNT, DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL
            from bbdw.FACT_MEMBERSHIPTRANSACTION FMT
            inner join bbdw.DIM_MEMBERSHIPPROGRAM DMP on FMT.MEMBERSHIPPROGRAMDIMID = DMP.MEMBERSHIPPROGRAMDIMID
            inner join bbdw.FACT_REVENUE FR on FMT.REVENUEFACTID = FR.REVENUEFACTID
            inner join bbdw.DIM_REVENUECODE DRC on FR.REVENUECODEDIMID = DRC.REVENUECODEDIMID
            inner join bbdw.FACT_REVENUE FR2 on Fr2.REVENUESEQUENCEID = FR.REVENUESEQUENCEID and FR2.[REVENUEDATEDIMID] >= @STARTDATE1DIMID and FR2.[REVENUEDATEDIMID] <= @ENDDATE1DIMID
            left join bbdw.FACT_MEMBERSHIPREVENUE FMR on FMR.ORIGINALMEMBERSHIPTRANSACTIONFACTID = FMT.MEMBERSHIPTRANSACTIONFACTID and FR2.REVENUEFACTID = FMR.REVENUEFACTID
            where DRC.REVENUETRANSACTIONTYPECODE = 0
                and (DRC.REVENUEAPPLICATIONCODE in (5,18) or (DRC.REVENUEAPPLICATIONCODE = 0 and FMR.MEMBERSHIPREVENUEFACTID is not null))
                and DMP.MEMBERSHIPPROGRAMSYSTEMID = @CONTEXTID
            group by DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL

            union all

            --Membership payments - Recurring gift

            select coalesce(SUM(RGPAYMENT.RECURRINGGIFTINSTALLMENTPAYMENTAMOUNT), 0) as AMOUNT, DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL
            from bbdw.DIM_MEMBERSHIPPROGRAM DMP
            inner join bbdw.FACT_MEMBERSHIPTRANSACTION FMT on FMT.MEMBERSHIPPROGRAMDIMID = DMP.MEMBERSHIPPROGRAMDIMID
            inner join bbdw.FACT_REVENUE FR on FMT.REVENUEFACTID = FR.REVENUEFACTID
            inner join bbdw.DIM_REVENUECODE DRC on FR.REVENUECODEDIMID = DRC.REVENUECODEDIMID
            inner join bbdw.FACT_REVENUE FR2 on Fr2.REVENUESEQUENCEID = FR.REVENUESEQUENCEID
            inner join bbdw.FACT_RECURRINGGIFTINSTALLMENT RGINSTALLMENT on rginstallment.REVENUEFACTID = fr2.REVENUEFACTID
            inner join bbdw.FACT_RECURRINGGIFTINSTALLMENTPAYMENT RGPAYMENT on RGINSTALLMENT.RECURRINGGIFTINSTALLMENTFACTID = RGPAYMENT.RECURRINGGIFTINSTALLMENTFACTID
            inner join bbdw.FACT_REVENUE FR3 on FR3.REVENUEFACTID = RGPAYMENT.REVENUEFACTID and FR3.[REVENUEDATEDIMID] >= @STARTDATE1DIMID and FR3.[REVENUEDATEDIMID] <= @ENDDATE1DIMID
            where DRC.REVENUETRANSACTIONTYPECODE = 2
                and DMP.MEMBERSHIPPROGRAMSYSTEMID = @CONTEXTID
            group by DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL

            union all

            --Membership payments - Recurring gift addons

            select coalesce(SUM(FR2.REVENUEAPPLICATIONAMOUNT), 0) as AMOUNT, DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL
            from BBDW.FACT_MEMBERSHIPADDON MA
            inner join bbdw.FACT_MEMBERSHIPTRANSACTION FMT on MA.MEMBERSHIPTRANSACTIONFACTID = FMT.MEMBERSHIPTRANSACTIONFACTID
            inner join bbdw.DIM_MEMBERSHIPPROGRAM DMP on FMT.MEMBERSHIPPROGRAMDIMID = DMP.MEMBERSHIPPROGRAMDIMID
            inner join bbdw.FACT_REVENUE FR on FMT.REVENUEFACTID = FR.REVENUEFACTID
            inner join bbdw.DIM_REVENUECODE DRC on FR.REVENUECODEDIMID = DRC.REVENUECODEDIMID
            inner join bbdw.FACT_REVENUE FR2 on MA.REVENUEFACTID = FR2.REVENUEFACTID and FR2.[REVENUEDATEDIMID] >= @STARTDATE1DIMID and FR2.[REVENUEDATEDIMID] <= @ENDDATE1DIMID
            where DRC.REVENUETRANSACTIONTYPECODE = 2
                and DMP.MEMBERSHIPPROGRAMSYSTEMID = @CONTEXTID
            group by DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL

            union all

            --Membership payments - Installment plans

            select coalesce(SUM(IPAYMENT.INSTALLMENTPAYMENTAMOUNT), 0) as AMOUNT, DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL
            from bbdw.DIM_MEMBERSHIPPROGRAM DMP
            inner join bbdw.FACT_MEMBERSHIPTRANSACTION FMT on FMT.MEMBERSHIPPROGRAMDIMID = DMP.MEMBERSHIPPROGRAMDIMID
            inner join bbdw.FACT_REVENUE FR on FMT.REVENUEFACTID = FR.REVENUEFACTID
            inner join bbdw.DIM_REVENUECODE DRC on FR.REVENUECODEDIMID = DRC.REVENUECODEDIMID
            inner join bbdw.FACT_REVENUE FR2 on Fr2.REVENUESEQUENCEID = FR.REVENUESEQUENCEID
            inner join bbdw.FACT_INSTALLMENT INSTALLMENT on installment.REVENUEFACTID = fr2.REVENUEFACTID
            inner join bbdw.FACT_INSTALLMENTPAYMENT IPAYMENT on INSTALLMENT.INSTALLMENTFACTID = IPAYMENT.INSTALLMENTFACTID
            inner join bbdw.FACT_REVENUE FR3 on IPAYMENT.REVENUEFACTID = FR3.REVENUEFACTID and FR3.[REVENUEDATEDIMID] >= @STARTDATE1DIMID and FR3.[REVENUEDATEDIMID] <= @ENDDATE1DIMID
            where DRC.REVENUETRANSACTIONTYPECODE = 15
                and DMP.MEMBERSHIPPROGRAMSYSTEMID = @CONTEXTID
            group by DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL) as REV1
        group by REV1.MEMBERSHIPLEVELSYSTEMID, REV1.MEMBERSHIPLEVEL),

 [DATERANGE2]  as
        (select 
            REV2.[MEMBERSHIPLEVEL],
            REV2.[MEMBERSHIPLEVELSYSTEMID],
            isnull(sum(REV2.[AMOUNT]), 0) as [TOTALREVENUE]
        from
            (--Membership payments - One-off

            select coalesce(SUM(FR2.REVENUEAPPLICATIONAMOUNT), 0) as AMOUNT, DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL
            from bbdw.FACT_MEMBERSHIPTRANSACTION FMT
            inner join bbdw.DIM_MEMBERSHIPPROGRAM DMP on FMT.MEMBERSHIPPROGRAMDIMID = DMP.MEMBERSHIPPROGRAMDIMID
            inner join bbdw.FACT_REVENUE FR on FMT.REVENUEFACTID = FR.REVENUEFACTID
            inner join bbdw.DIM_REVENUECODE DRC on FR.REVENUECODEDIMID = DRC.REVENUECODEDIMID
            inner join bbdw.FACT_REVENUE FR2 on Fr2.REVENUESEQUENCEID = FR.REVENUESEQUENCEID and FR2.[REVENUEDATEDIMID] >= @STARTDATE2DIMID and FR2.[REVENUEDATEDIMID] <= @ENDDATE2DIMID
            left join bbdw.FACT_MEMBERSHIPREVENUE FMR on FMR.ORIGINALMEMBERSHIPTRANSACTIONFACTID = FMT.MEMBERSHIPTRANSACTIONFACTID and FR2.REVENUEFACTID = FMR.REVENUEFACTID
            where DRC.REVENUETRANSACTIONTYPECODE = 0
                and (DRC.REVENUEAPPLICATIONCODE in (5,18) or (DRC.REVENUEAPPLICATIONCODE = 0 and FMR.MEMBERSHIPREVENUEFACTID is not null))
                and DMP.MEMBERSHIPPROGRAMSYSTEMID = @CONTEXTID
            group by DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL

            union all

            --Membership payments - Recurring gift

            select coalesce(SUM(RGPAYMENT.RECURRINGGIFTINSTALLMENTPAYMENTAMOUNT), 0) as AMOUNT, DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL
            from bbdw.DIM_MEMBERSHIPPROGRAM DMP
            inner join bbdw.FACT_MEMBERSHIPTRANSACTION FMT on FMT.MEMBERSHIPPROGRAMDIMID = DMP.MEMBERSHIPPROGRAMDIMID
            inner join bbdw.FACT_REVENUE FR on FMT.REVENUEFACTID = FR.REVENUEFACTID
            inner join bbdw.DIM_REVENUECODE DRC on FR.REVENUECODEDIMID = DRC.REVENUECODEDIMID
            inner join bbdw.FACT_REVENUE FR2 on Fr2.REVENUESEQUENCEID = FR.REVENUESEQUENCEID
            inner join bbdw.FACT_RECURRINGGIFTINSTALLMENT RGINSTALLMENT on rginstallment.REVENUEFACTID = fr2.REVENUEFACTID
            inner join bbdw.FACT_RECURRINGGIFTINSTALLMENTPAYMENT RGPAYMENT on RGINSTALLMENT.RECURRINGGIFTINSTALLMENTFACTID = RGPAYMENT.RECURRINGGIFTINSTALLMENTFACTID
            inner join bbdw.FACT_REVENUE FR3 on FR3.REVENUEFACTID = RGPAYMENT.REVENUEFACTID and FR3.[REVENUEDATEDIMID] >= @STARTDATE2DIMID and FR3.[REVENUEDATEDIMID] <= @ENDDATE2DIMID
            where DRC.REVENUETRANSACTIONTYPECODE = 2
                and DMP.MEMBERSHIPPROGRAMSYSTEMID = @CONTEXTID
            group by DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL

            union all

            --Membership payments - Recurring gift addons

            select coalesce(SUM(FR2.REVENUEAPPLICATIONAMOUNT), 0) as AMOUNT, DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL
            from BBDW.FACT_MEMBERSHIPADDON MA
            inner join bbdw.FACT_MEMBERSHIPTRANSACTION FMT on MA.MEMBERSHIPTRANSACTIONFACTID = FMT.MEMBERSHIPTRANSACTIONFACTID
            inner join bbdw.DIM_MEMBERSHIPPROGRAM DMP on FMT.MEMBERSHIPPROGRAMDIMID = DMP.MEMBERSHIPPROGRAMDIMID
            inner join bbdw.FACT_REVENUE FR on FMT.REVENUEFACTID = FR.REVENUEFACTID
            inner join bbdw.DIM_REVENUECODE DRC on FR.REVENUECODEDIMID = DRC.REVENUECODEDIMID
            inner join bbdw.FACT_REVENUE FR2 on MA.REVENUEFACTID = FR2.REVENUEFACTID and FR2.[REVENUEDATEDIMID] >= @STARTDATE2DIMID and FR2.[REVENUEDATEDIMID] <= @ENDDATE2DIMID
            where DRC.REVENUETRANSACTIONTYPECODE = 2
                and DMP.MEMBERSHIPPROGRAMSYSTEMID = @CONTEXTID
            group by DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL

            union all

            --Membership payments - Installment plans

            select coalesce(SUM(IPAYMENT.INSTALLMENTPAYMENTAMOUNT), 0) as AMOUNT, DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL
            from bbdw.DIM_MEMBERSHIPPROGRAM DMP
            inner join bbdw.FACT_MEMBERSHIPTRANSACTION FMT on FMT.MEMBERSHIPPROGRAMDIMID = DMP.MEMBERSHIPPROGRAMDIMID
            inner join bbdw.FACT_REVENUE FR on FMT.REVENUEFACTID = FR.REVENUEFACTID
            inner join bbdw.DIM_REVENUECODE DRC on FR.REVENUECODEDIMID = DRC.REVENUECODEDIMID
            inner join bbdw.FACT_REVENUE FR2 on Fr2.REVENUESEQUENCEID = FR.REVENUESEQUENCEID
            inner join bbdw.FACT_INSTALLMENT INSTALLMENT on installment.REVENUEFACTID = fr2.REVENUEFACTID
            inner join bbdw.FACT_INSTALLMENTPAYMENT IPAYMENT on INSTALLMENT.INSTALLMENTFACTID = IPAYMENT.INSTALLMENTFACTID
            inner join bbdw.FACT_REVENUE FR3 on IPAYMENT.REVENUEFACTID = FR3.REVENUEFACTID and FR3.[REVENUEDATEDIMID] >= @STARTDATE2DIMID and FR3.[REVENUEDATEDIMID] <= @ENDDATE2DIMID
            where DRC.REVENUETRANSACTIONTYPECODE = 15
                and DMP.MEMBERSHIPPROGRAMSYSTEMID = @CONTEXTID
            group by DMP.MEMBERSHIPLEVELSYSTEMID, DMP.MEMBERSHIPLEVEL) as REV2
        group by REV2.MEMBERSHIPLEVELSYSTEMID, REV2.MEMBERSHIPLEVEL)

select top 5
  coalesce(d1.[MEMBERSHIPLEVEL], d2.[MEMBERSHIPLEVEL]) as [MEMBERSHIPLEVEL], 
  coalesce(d1.[TOTALREVENUE], 0) as [DATERANGE1REVENUE], 
  coalesce(d2.[TOTALREVENUE], 0) as [DATERANGE2REVENUE]
from [DATERANGE1] d1
full join [DATERANGE2] d2 on d1.[MEMBERSHIPLEVELSYSTEMID] = d2.[MEMBERSHIPLEVELSYSTEMID]
order by d2.[TOTALREVENUE] desc