USP_DATALIST_MEMBERSHIPACTION

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_MEMBERSHIPACTION(
  @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 
      case when ma.[MEMBERSHIPACTION] = 'Rejoin' then 'Join' else ma.[MEMBERSHIPACTION] end as [MEMBERSHIPACTION],
      isnull(count(distinct mt.[MEMBERSHIPDIMID]), 0) as [MEMBERSHIPS]
    from BBDW.[v_DIM_MEMBERSHIPACTION] ma
    inner join BBDW.[v_FACT_MEMBERSHIPTRANSACTION] mt on ma.[MEMBERSHIPACTIONDIMID] = mt.[MEMBERSHIPACTIONDIMID] and mt.[MEMBERSHIPTRANSACTIONDATEDIMID] >= @STARTDATE1DIMID and mt.[MEMBERSHIPTRANSACTIONDATEDIMID] <= @ENDDATE1DIMID
    inner join BBDW.[v_DIM_MEMBERSHIPPROGRAM] mp on mt.[MEMBERSHIPPROGRAMDIMID] = mp.[MEMBERSHIPPROGRAMDIMID] and mp.[MEMBERSHIPPROGRAMSYSTEMID] = @CONTEXTID
      where 
      ma.MEMBERSHIPACTION in ('Join', 'Renew', 'Rejoin')
      group by case when ma.[MEMBERSHIPACTION] = 'Rejoin' then 'Join' else ma.[MEMBERSHIPACTION] end),

 [DATERANGE2]  as
    (select 
    case when ma.[MEMBERSHIPACTION] = 'Rejoin' then 'Join' else ma.[MEMBERSHIPACTION] end as [MEMBERSHIPACTION],
    isnull(count(distinct mt.[MEMBERSHIPDIMID]), 0) as [MEMBERSHIPS]
    from BBDW.[v_DIM_MEMBERSHIPACTION] ma
    inner join BBDW.[v_FACT_MEMBERSHIPTRANSACTION] mt on ma.[MEMBERSHIPACTIONDIMID] = mt.[MEMBERSHIPACTIONDIMID] and mt.[MEMBERSHIPTRANSACTIONDATEDIMID] >= @STARTDATE2DIMID and mt.[MEMBERSHIPTRANSACTIONDATEDIMID] <= @ENDDATE2DIMID
    inner join BBDW.[v_DIM_MEMBERSHIPPROGRAM] mp on mt.[MEMBERSHIPPROGRAMDIMID] = mp.[MEMBERSHIPPROGRAMDIMID] and mp.[MEMBERSHIPPROGRAMSYSTEMID] = @CONTEXTID
    where 
    ma.MEMBERSHIPACTION in ('Join', 'Renew', 'Rejoin')
    group by case when ma.[MEMBERSHIPACTION] = 'Rejoin' then 'Join' else ma.[MEMBERSHIPACTION] end)

select 
  isnull(d1.[MEMBERSHIPACTION], d2.[MEMBERSHIPACTION]) as [MEMBERSHIPACTION], 
  coalesce(d1.[MEMBERSHIPS], 0) as [DATERANGE1MEMBERSHIPS], 
  coalesce(d2.[MEMBERSHIPS], 0) as [DATERANGE2MEMBERSHIPS]
from [DATERANGE1] d1
full join [DATERANGE2] d2 on d1.[MEMBERSHIPACTION] = d2.[MEMBERSHIPACTION]