USP_REPORT_MEMBERSHIPACTIVITY
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@GROUP1 | nvarchar(30) | IN | |
@GROUP2 | nvarchar(30) | IN | |
@GROUP3 | nvarchar(30) | IN | |
@DATA1 | nvarchar(30) | IN | |
@DATA2 | nvarchar(30) | IN | |
@DATA3 | nvarchar(30) | IN | |
@DATA4 | nvarchar(30) | IN | |
@DATA5 | nvarchar(30) | IN | |
@DATA6 | nvarchar(30) | IN | |
@DATA7 | nvarchar(30) | IN | |
@DATA8 | nvarchar(30) | IN | |
@DATA9 | nvarchar(30) | IN | |
@DATA10 | nvarchar(30) | IN | |
@DATA11 | nvarchar(30) | IN | |
@DATA12 | nvarchar(30) | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@MEMBERSHIPPROGRAMS | nvarchar(max) | IN | |
@PROGRAMFILTERTYPE | nvarchar(100) | IN | |
@PROGRAMFILTERTYPECODE | tinyint | IN |
Definition
Copy
create procedure BBDW.[USP_REPORT_MEMBERSHIPACTIVITY] (
@GROUP1 nvarchar(30),
@GROUP2 nvarchar(30),
@GROUP3 nvarchar(30),
@DATA1 nvarchar(30),
@DATA2 nvarchar(30),
@DATA3 nvarchar(30),
@DATA4 nvarchar(30),
@DATA5 nvarchar(30),
@DATA6 nvarchar(30),
@DATA7 nvarchar(30),
@DATA8 nvarchar(30),
@DATA9 nvarchar(30),
@DATA10 nvarchar(30),
@DATA11 nvarchar(30),
@DATA12 nvarchar(30),
@STARTDATE datetime,
@ENDDATE datetime,
@MEMBERSHIPPROGRAMS nvarchar(max),
@PROGRAMFILTERTYPE nvarchar(100) = '',
@PROGRAMFILTERTYPECODE tinyint = 0
)
with execute as owner
as
set @MEMBERSHIPPROGRAMS = REPLACE(@MEMBERSHIPPROGRAMS, '<', '<');
set @MEMBERSHIPPROGRAMS = REPLACE(@MEMBERSHIPPROGRAMS, '>', '>');
declare @STARTDATEDIMID nvarchar(30)
declare @ENDDATEDIMID nvarchar(30)
declare @SQL nvarchar(max)
declare @CTESQL nvarchar(max) = ''
declare @TableVarSQL nvarchar(max)
declare @Select1SQL nvarchar(max)
declare @From1SQL nvarchar(max)
declare @Where1SQL nvarchar(max)
declare @Group1SQL nvarchar(max)
declare @Select2SQL nvarchar(max)
declare @From2SQL nvarchar(max)
declare @Where2SQL nvarchar(max)
declare @Group2SQL nvarchar(max)
declare @Select3SQL nvarchar(max)
declare @From3SQL nvarchar(max)
declare @Where3SQL nvarchar(max)
declare @Group3SQL nvarchar(max)
declare @Select4SQL nvarchar(max)
declare @From4SQL nvarchar(max)
declare @Where4SQL nvarchar(max)
declare @Group4SQL nvarchar(max)
if @STARTDATE is null
set @STARTDATE = (select min([MEMBERSHIPTRANSACTIONDATE]) from BBDW.[FACT_MEMBERSHIPTRANSACTION])
if @ENDDATE is null
set @ENDDATE = (select max([MEMBERSHIPTRANSACTIONDATE]) from BBDW.[FACT_MEMBERSHIPTRANSACTION])
set @STARTDATEDIMID = (year(@STARTDATE) * 10000) + (month(@STARTDATE) * 100) + day(@STARTDATE)
set @ENDDATEDIMID = (year(@ENDDATE) * 10000) + (month(@ENDDATE) * 100) + day(@ENDDATE)
--Add CTEs if needed
if (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR')) and (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME')
begin
set @CTESQL = 'with [YEARS] as
(
select
[CALENDARYEAR],
[FISCALYEAR],
min([DATEDIMID]) [FIRSTDATEDIMID],
max([DATEDIMID]) [LASTDATEDIMID]
from BBDW.[v_DIM_DATE]
where [DATEDIMID] between ' + @STARTDATEDIMID + ' and ' + @ENDDATEDIMID +
' group by [CALENDARYEAR], [FISCALYEAR]
),
[MONTHS] as
(
select
[CALENDARYEAR],
[FISCALYEAR],
[CALENDARMONTH],
[CALENDARMONTHYEARNAME],
min([DATEDIMID]) [FIRSTDATEDIMID],
max([DATEDIMID]) [LASTDATEDIMID]
from BBDW.[v_DIM_DATE]
where [DATEDIMID] between ' + @STARTDATEDIMID + ' and ' + @ENDDATEDIMID +
' group by [CALENDARMONTHYEARNAME], [CALENDARYEAR], [CALENDARMONTH], [FISCALYEAR]
) '
end
if (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR')) and (@GROUP1 <> 'CALENDARMONTHYEARNAME' and @GROUP2 <> 'CALENDARMONTHYEARNAME' and @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @CTESQL = 'with [YEARS] as
(
select
[CALENDARYEAR],
[FISCALYEAR],
min([DATEDIMID]) [FIRSTDATEDIMID],
max([DATEDIMID]) [LASTDATEDIMID]
from BBDW.[v_DIM_DATE]
where [DATEDIMID] between ' + @STARTDATEDIMID + ' and ' + @ENDDATEDIMID +
' group by [CALENDARYEAR], [FISCALYEAR]
) '
end
if (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME') and (@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR'))
begin
set @CTESQL = 'with [MONTHS] as
(
select
[CALENDARYEAR],
[FISCALYEAR],
[CALENDARMONTH],
[CALENDARMONTHYEARNAME],
min([DATEDIMID]) [FIRSTDATEDIMID],
max([DATEDIMID]) [LASTDATEDIMID]
from BBDW.[v_DIM_DATE]
where [DATEDIMID] between ' + @STARTDATEDIMID + ' and ' + @ENDDATEDIMID +
' group by [CALENDARMONTHYEARNAME], [CALENDARYEAR], [CALENDARMONTH], [FISCALYEAR]
) '
end
--Build core SQL
set @Select1SQL = 'select @PROGRAMFILTERTYPE as [PROGRAMFILTERTYPE], '
set @From1SQL = 'from ('
set @Where1SQL = ') as m '
set @Group1SQL = ''
if @Group1 is not null
begin
set @Group1SQL = ' group by '
end
set @TableVarSQL = 'declare @MEMBERSHIPPROGRAMIDTABLE table (MEMBERSHIPPROGRAMSYSTEMID uniqueidentifier); '
-- 0 = All, 1 = Selected, 2 = None
if @PROGRAMFILTERTYPECODE = 0
begin
set @TableVarSQL = @TableVarSQL + 'insert into @MEMBERSHIPPROGRAMIDTABLE (MEMBERSHIPPROGRAMSYSTEMID)
select distinct [MEMBERSHIPPROGRAMSYSTEMID]
from BBDW.[DIM_MEMBERSHIPPROGRAM]
where MEMBERSHIPPROGRAMSYSTEMID <> ''00000000-0000-0000-0000-000000000000''
and MEMBERSHIPPROGRAMISACTIVE = 1; '
end
else if @PROGRAMFILTERTYPECODE = 1
begin
set @TableVarSQL = @TableVarSQL + 'insert into @MEMBERSHIPPROGRAMIDTABLE (MEMBERSHIPPROGRAMSYSTEMID)
select [MEMBERSHIPPROGRAMID] from BBDW.[UFN_MEMBERSHIPPROGRAMS_FROMITEMLISTXML] (''' + @MEMBERSHIPPROGRAMS + '''); '
end
--Handle Year/Month CTE joins
if (@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME'))
begin
set @Select2SQL = 'select dm.[MEMBERSHIPDIMID], '
set @Group2SQL = ' group by dm.[MEMBERSHIPDIMID], '
set @From2SQL = 'from BBDW.[v_FACT_MEMBERSHIPTRANSACTION] fmt
left join BBDW.[v_DIM_MEMBERSHIP] dm on dm.[MEMBERSHIPDIMID] = fmt.[MEMBERSHIPDIMID]
left join BBDW.[v_DIM_MEMBERSHIPPROGRAM] dmp on dmp.[MEMBERSHIPPROGRAMDIMID] = fmt.[MEMBERSHIPPROGRAMDIMID]
inner join @MEMBERSHIPPROGRAMIDTABLE tmp on tmp.MEMBERSHIPPROGRAMSYSTEMID = dmp.[MEMBERSHIPPROGRAMSYSTEMID]
left join BBDW.[v_DIM_MEMBERSHIPSTATUS] ms on ms.[MEMBERSHIPSTATUSDIMID] = fmt.[MEMBERSHIPSTATUSDIMID]
left join BBDW.[v_DIM_MEMBERSHIPACTION] dma on dma.[MEMBERSHIPACTIONDIMID] = fmt.[MEMBERSHIPACTIONDIMID] '
set @Where2SQL = 'where (fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] <= ' + @ENDDATEDIMID + ' and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] >= ' + @STARTDATEDIMID + ') '
end
if (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME'))
begin
set @Select2SQL = 'select dm.[MEMBERSHIPDIMID], '
set @Group2SQL = ' group by dm.[MEMBERSHIPDIMID], '
set @From2SQL = 'from BBDW.[v_FACT_MEMBERSHIPTRANSACTION] fmt
left join BBDW.[v_DIM_MEMBERSHIP] dm on dm.[MEMBERSHIPDIMID] = fmt.[MEMBERSHIPDIMID]
left join BBDW.[v_DIM_MEMBERSHIPPROGRAM] dmp on dmp.[MEMBERSHIPPROGRAMDIMID] = fmt.[MEMBERSHIPPROGRAMDIMID]
inner join @MEMBERSHIPPROGRAMIDTABLE tmp on tmp.MEMBERSHIPPROGRAMSYSTEMID = dmp.[MEMBERSHIPPROGRAMSYSTEMID]
left join BBDW.[v_DIM_MEMBERSHIPSTATUS] ms on ms.[MEMBERSHIPSTATUSDIMID] = fmt.[MEMBERSHIPSTATUSDIMID]
left join BBDW.[v_DIM_MEMBERSHIPACTION] dma on dma.[MEMBERSHIPACTIONDIMID] = fmt.[MEMBERSHIPACTIONDIMID] '
set @Where2SQL = 'where (fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] <= ' + @ENDDATEDIMID + ' and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] >= ' + @STARTDATEDIMID + ')'
end
if (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR'))
and (@GROUP1 <> 'CALENDARMONTHYEARNAME' or @GROUP2 <> 'CALENDARMONTHYEARNAME' or @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @Select3SQL = ' union all '
end
if @GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR')
begin
set @Select3SQL = @Select3SQL + 'select dm.[MEMBERSHIPDIMID], '
set @From3SQL = 'from BBDW.[v_FACT_MEMBERSHIPTRANSACTION] fmt
left join BBDW.[v_DIM_MEMBERSHIP] dm on dm.[MEMBERSHIPDIMID] = fmt.[MEMBERSHIPDIMID]
left join BBDW.[v_DIM_MEMBERSHIPPROGRAM] dmp on dmp.[MEMBERSHIPPROGRAMDIMID] = fmt.[MEMBERSHIPPROGRAMDIMID]
inner join @MEMBERSHIPPROGRAMIDTABLE tmp on tmp.MEMBERSHIPPROGRAMSYSTEMID = dmp.[MEMBERSHIPPROGRAMSYSTEMID]
left join BBDW.[v_DIM_MEMBERSHIPSTATUS] ms on ms.[MEMBERSHIPSTATUSDIMID] = fmt.[MEMBERSHIPSTATUSDIMID]
left join BBDW.[v_DIM_MEMBERSHIPACTION] dma on dma.[MEMBERSHIPACTIONDIMID] = fmt.[MEMBERSHIPACTIONDIMID]
left join [YEARS] cy on 1=1 '
set @Where3SQL = 'where (fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] <= ' + @ENDDATEDIMID + ' and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] >= ' + @STARTDATEDIMID + ')'
set @Group3SQL = ' group by dm.[MEMBERSHIPDIMID], '
end
if @GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME'
begin
set @Select4SQL = ' union all select dm.[MEMBERSHIPDIMID], '
set @From4SQL = 'from BBDW.[v_FACT_MEMBERSHIPTRANSACTION] fmt
left join BBDW.[v_DIM_MEMBERSHIP] dm on dm.[MEMBERSHIPDIMID] = fmt.[MEMBERSHIPDIMID]
left join BBDW.[v_DIM_MEMBERSHIPPROGRAM] dmp on dmp.[MEMBERSHIPPROGRAMDIMID] = fmt.[MEMBERSHIPPROGRAMDIMID]
inner join @MEMBERSHIPPROGRAMIDTABLE tmp on tmp.MEMBERSHIPPROGRAMSYSTEMID = dmp.[MEMBERSHIPPROGRAMSYSTEMID]
left join BBDW.[v_DIM_MEMBERSHIPSTATUS] ms on ms.[MEMBERSHIPSTATUSDIMID] = fmt.[MEMBERSHIPSTATUSDIMID]
left join BBDW.[v_DIM_MEMBERSHIPACTION] dma on dma.[MEMBERSHIPACTIONDIMID] = fmt.[MEMBERSHIPACTIONDIMID]
left join [MONTHS] cm on 1=1 '
set @Where4SQL = 'where (fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] <= ' + @ENDDATEDIMID + ' and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] >= ' + @STARTDATEDIMID + ')'
set @Group4SQL = ' group by dm.[MEMBERSHIPDIMID], '
end
--Add optional joins
if @GROUP1 in ('COUNTRY', 'STATE', 'COUNTY', 'CITY', 'POSTCODE', 'CLASSOF', 'EDUCATIONDEGREE', 'ETHNICITY') or @GROUP2 in ('COUNTRY', 'STATE', 'COUNTY', 'CITY', 'POSTCODE', 'CLASSOF', 'EDUCATIONDEGREE', 'ETHNICITY') or @GROUP3 in ('COUNTRY', 'STATE', 'COUNTY', 'CITY', 'POSTCODE', 'CLASSOF', 'EDUCATIONDEGREE', 'ETHNICITY')
begin
set @From2SQL = @From2SQL + 'left join BBDW.[v_FACT_MEMBER] fmp on fmp.[MEMBERSHIPDIMID] = dm.[MEMBERSHIPDIMID]
inner join BBDW.[v_DIM_MEMBERFLAG] dmf on fmp.[MEMBERFLAGDIMID] = dmf.[MEMBERFLAGDIMID] and dmf.[MEMBERISPRIMARY] = 1
left join BBDW.[v_DIM_CONSTITUENTLOOKUP] dcl on dcl.[CONSTITUENTDIMID] = fmp.[CONSTITUENTDIMID] '
set @From3SQL = @From3SQL + 'left join BBDW.[v_FACT_MEMBER] fmp on fmp.[MEMBERSHIPDIMID] = dm.[MEMBERSHIPDIMID]
inner join BBDW.[v_DIM_MEMBERFLAG] dmf on fmp.[MEMBERFLAGDIMID] = dmf.[MEMBERFLAGDIMID] and dmf.[MEMBERISPRIMARY] = 1
left join BBDW.[v_DIM_CONSTITUENTLOOKUP] dcl on dcl.[CONSTITUENTDIMID] = fmp.[CONSTITUENTDIMID] '
set @From4SQL = @From4SQL + 'left join BBDW.[v_FACT_MEMBER] fmp on fmp.[MEMBERSHIPDIMID] = dm.[MEMBERSHIPDIMID]
inner join BBDW.[v_DIM_MEMBERFLAG] dmf on fmp.[MEMBERFLAGDIMID] = dmf.[MEMBERFLAGDIMID] and dmf.[MEMBERISPRIMARY] = 1
left join BBDW.[v_DIM_CONSTITUENTLOOKUP] dcl on dcl.[CONSTITUENTDIMID] = fmp.[CONSTITUENTDIMID] '
end
if @GROUP1 in ('CLASSOF', 'EDUCATIONDEGREE') or @GROUP2 in ('CLASSOF', 'EDUCATIONDEGREE') or @GROUP3 in ('CLASSOF', 'EDUCATIONDEGREE')
begin
set @From2SQL = @From2SQL + 'left join BBDW.[v_DIM_EDUCATION] de on de.[CONSTITUENTDIMID] = fmp.[CONSTITUENTDIMID] and de.[ISPRIMARYRECORD] = 1 and de.[EDUCATIONINSTITUTIONISAFFLIATED] = 1 '
set @From3SQL = @From3SQL + 'left join BBDW.[v_DIM_EDUCATION] de on de.[CONSTITUENTDIMID] = fmp.[CONSTITUENTDIMID] and de.[ISPRIMARYRECORD] = 1 and de.[EDUCATIONINSTITUTIONISAFFLIATED] = 1 '
set @From4SQL = @From4SQL + 'left join BBDW.[v_DIM_EDUCATION] de on de.[CONSTITUENTDIMID] = fmp.[CONSTITUENTDIMID] and de.[ISPRIMARYRECORD] = 1 and de.[EDUCATIONINSTITUTIONISAFFLIATED] = 1 '
end
if @GROUP1 = ('ETHNICITY') or @GROUP2 = ('ETHNICITY') or @GROUP3 = ('ETHNICITY')
begin
set @From2SQL = @From2SQL + 'left join BBDW.[v_FACT_CONSTITUENTETHNICITY] fe on fe.[CONSTITUENTDIMID] = fmp.CONSTITUENTDIMID
left join BBDW.[v_DIM_ETHNICITY] e on fe.[ETHNICITYDIMID] = e.[ETHNICITYDIMID] '
set @From3SQL = @From3SQL + 'left join BBDW.[v_FACT_CONSTITUENTETHNICITY] fe on fe.[CONSTITUENTDIMID] = fmp.CONSTITUENTDIMID
left join BBDW.[v_DIM_ETHNICITY] e on fe.[ETHNICITYDIMID] = e.[ETHNICITYDIMID] '
set @From4SQL = @From4SQL + 'left join BBDW.[v_FACT_CONSTITUENTETHNICITY] fe on fe.[CONSTITUENTDIMID] = fmp.CONSTITUENTDIMID
left join BBDW.[v_DIM_ETHNICITY] e on fe.[ETHNICITYDIMID] = e.[ETHNICITYDIMID] '
end
--Add selected groupings
if @GROUP1 = 'MEMBERSHIPPROGRAM' or @GROUP2 = 'MEMBERSHIPPROGRAM' or @GROUP3 = 'MEMBERSHIPPROGRAM'
begin
set @Select1SQL = @Select1SQL + 'm.[MEMBERSHIPPROGRAM], '
set @Select2SQL = @Select2SQL + 'dmp.[MEMBERSHIPPROGRAM], '
set @Select3SQL = @Select3SQL + 'dmp.[MEMBERSHIPPROGRAM], '
set @Select4SQL = @Select4SQL + 'dmp.[MEMBERSHIPPROGRAM], '
set @Group1SQL = @Group1SQL + 'm.[MEMBERSHIPPROGRAM], '
set @Group2SQL = @Group2SQL + 'dmp.[MEMBERSHIPPROGRAM], '
set @Group3SQL = @Group3SQL + 'dmp.[MEMBERSHIPPROGRAM], '
set @Group4SQL = @Group4SQL + 'dmp.[MEMBERSHIPPROGRAM], '
end
if @GROUP1 = 'MEMBERSHIPLEVEL' or @GROUP2 = 'MEMBERSHIPLEVEL' or @GROUP3 = 'MEMBERSHIPLEVEL'
begin
set @Select1SQL = @Select1SQL + 'm.[MEMBERSHIPLEVEL], '
set @Select2SQL = @Select2SQL + 'dmp.[MEMBERSHIPLEVEL], '
set @Select3SQL = @Select3SQL + 'dmp.[MEMBERSHIPLEVEL], '
set @Select4SQL = @Select4SQL + 'dmp.[MEMBERSHIPLEVEL], '
set @Group1SQL = @Group1SQL + 'm.[MEMBERSHIPLEVEL], '
set @Group2SQL = @Group2SQL + 'dmp.[MEMBERSHIPLEVEL], '
set @Group3SQL = @Group3SQL + 'dmp.[MEMBERSHIPLEVEL], '
set @Group4SQL = @Group4SQL + 'dmp.[MEMBERSHIPLEVEL], '
end
if @GROUP1 = 'MEMBERSHIPREPORTINGGROUP' or @GROUP2 = 'MEMBERSHIPREPORTINGGROUP' or @GROUP3 = 'MEMBERSHIPREPORTINGGROUP'
begin
set @Select1SQL = @Select1SQL + 'm.[MEMBERSHIPREPORTINGGROUP], '
set @Select2SQL = @Select2SQL + 'dmp.[MEMBERSHIPREPORTINGGROUP], '
set @Select3SQL = @Select3SQL + 'dmp.[MEMBERSHIPREPORTINGGROUP], '
set @Select4SQL = @Select4SQL + 'dmp.[MEMBERSHIPREPORTINGGROUP], '
set @Group1SQL = @Group1SQL + 'm.[MEMBERSHIPREPORTINGGROUP], '
set @Group2SQL = @Group2SQL + 'dmp.[MEMBERSHIPREPORTINGGROUP], '
set @Group3SQL = @Group3SQL + 'dmp.[MEMBERSHIPREPORTINGGROUP], '
set @Group4SQL = @Group4SQL + 'dmp.[MEMBERSHIPREPORTINGGROUP], '
end
if @GROUP1 = 'CLASSOF' or @GROUP2 = 'CLASSOF' or @GROUP3 = 'CLASSOF'
begin
set @Select1SQL = @Select1SQL + 'm.[CLASSOF], '
set @Select2SQL = @Select2SQL + 'isnull(de.[CLASSOF], 0) as [CLASSOF], '
set @Select3SQL = @Select3SQL + 'isnull(de.[CLASSOF], 0) as [CLASSOF], '
set @Select4SQL = @Select4SQL + 'isnull(de.[CLASSOF], 0) as [CLASSOF], '
set @Group1SQL = @Group1SQL + 'm.[CLASSOF], '
set @Group2SQL = @Group2SQL + 'isnull(de.[CLASSOF], 0), '
set @Group3SQL = @Group3SQL + 'isnull(de.[CLASSOF], 0), '
set @Group4SQL = @Group4SQL + 'isnull(de.[CLASSOF], 0), '
end
if @GROUP1 = 'EDUCATIONDEGREE' or @GROUP2 = 'EDUCATIONDEGREE' or @GROUP3 = 'EDUCATIONDEGREE'
begin
set @Select1SQL = @Select1SQL + 'm.[EDUCATIONDEGREE], '
set @Select2SQL = @Select2SQL + 'case when de.[ACADEMICCATALOGDEGREE] is null and de.[EDUCATIONDEGREE] is null then ''No Educational Degree''
when de.[ACADEMICCATALOGDEGREE] <> ''No Academic Catalog Degree'' then de.[ACADEMICCATALOGDEGREE]
else de.[EDUCATIONDEGREE]
end as [EDUCATIONDEGREE], '
set @Select3SQL = @Select3SQL + 'case when de.[ACADEMICCATALOGDEGREE] is null and de.[EDUCATIONDEGREE] is null then ''No Educational Degree''
when de.[ACADEMICCATALOGDEGREE] <> ''No Academic Catalog Degree'' then de.[ACADEMICCATALOGDEGREE]
else de.[EDUCATIONDEGREE]
end as [EDUCATIONDEGREE], '
set @Select4SQL = @Select4SQL + 'case when de.[ACADEMICCATALOGDEGREE] is null and de.[EDUCATIONDEGREE] is null then ''No Educational Degree''
when de.[ACADEMICCATALOGDEGREE] <> ''No Academic Catalog Degree'' then de.[ACADEMICCATALOGDEGREE]
else de.[EDUCATIONDEGREE]
end as [EDUCATIONDEGREE], '
set @Group1SQL = @Group1SQL + 'm.[EDUCATIONDEGREE], '
set @Group2SQL = @Group2SQL + 'case when de.[ACADEMICCATALOGDEGREE] is null and de.[EDUCATIONDEGREE] is null then ''No Educational Degree''
when de.[ACADEMICCATALOGDEGREE] <> ''No Academic Catalog Degree'' then de.[ACADEMICCATALOGDEGREE]
else de.[EDUCATIONDEGREE]
end, '
set @Group3SQL = @Group3SQL + 'case when de.[ACADEMICCATALOGDEGREE] is null and de.[EDUCATIONDEGREE] is null then ''No Educational Degree''
when de.[ACADEMICCATALOGDEGREE] <> ''No Academic Catalog Degree'' then de.[ACADEMICCATALOGDEGREE]
else de.[EDUCATIONDEGREE]
end, '
set @Group4SQL = @Group4SQL + 'case when de.[ACADEMICCATALOGDEGREE] is null and de.[EDUCATIONDEGREE] is null then ''No Educational Degree''
when de.[ACADEMICCATALOGDEGREE] <> ''No Academic Catalog Degree'' then de.[ACADEMICCATALOGDEGREE]
else de.[EDUCATIONDEGREE]
end, '
end
if @GROUP1 = 'COUNTRY' or @GROUP2 = 'COUNTRY' or @GROUP3 = 'COUNTRY'
begin
set @Select1SQL = @Select1SQL + 'm.[COUNTRY], '
set @Select2SQL = @Select2SQL + 'dcl.[PRIMARYADDRESSCOUNTRY] as [COUNTRY], '
set @Select3SQL = @Select3SQL + 'dcl.[PRIMARYADDRESSCOUNTRY] as [COUNTRY], '
set @Select4SQL = @Select4SQL + 'dcl.[PRIMARYADDRESSCOUNTRY] as [COUNTRY], '
set @Group1SQL = @Group1SQL + 'm.[COUNTRY], '
set @Group2SQL = @Group2SQL + 'dcl.[PRIMARYADDRESSCOUNTRY], '
set @Group3SQL = @Group3SQL + 'dcl.[PRIMARYADDRESSCOUNTRY], '
set @Group4SQL = @Group4SQL + 'dcl.[PRIMARYADDRESSCOUNTRY], '
end
if @GROUP1 = 'STATE' or @GROUP2 = 'STATE' or @GROUP3 = 'STATE'
begin
set @Select1SQL = @Select1SQL + 'm.[STATE], '
set @Select2SQL = @Select2SQL + 'dcl.[PRIMARYADDRESSSTATE] as [STATE], '
set @Select3SQL = @Select3SQL + 'dcl.[PRIMARYADDRESSSTATE] as [STATE], '
set @Select4SQL = @Select4SQL + 'dcl.[PRIMARYADDRESSSTATE] as [STATE], '
set @Group1SQL = @Group1SQL + 'm.[STATE], '
set @Group2SQL = @Group2SQL + 'dcl.[PRIMARYADDRESSSTATE], '
set @Group3SQL = @Group3SQL + 'dcl.[PRIMARYADDRESSSTATE], '
set @Group4SQL = @Group4SQL + 'dcl.[PRIMARYADDRESSSTATE], '
end
if @GROUP1 = 'COUNTY' or @GROUP2 = 'COUNTY' or @GROUP3 = 'COUNTY'
begin
set @Select1SQL = @Select1SQL + 'm.[COUNTY], '
set @Select2SQL = @Select2SQL + 'dcl.[PRIMARYADDRESSCOUNTY] as [COUNTY], '
set @Select3SQL = @Select3SQL + 'dcl.[PRIMARYADDRESSCOUNTY] as [COUNTY], '
set @Select4SQL = @Select4SQL + 'dcl.[PRIMARYADDRESSCOUNTY] as [COUNTY], '
set @Group1SQL = @Group1SQL + 'm.[COUNTY], '
set @Group2SQL = @Group2SQL + 'dcl.[PRIMARYADDRESSCOUNTY], '
set @Group3SQL = @Group3SQL + 'dcl.[PRIMARYADDRESSCOUNTY], '
set @Group4SQL = @Group4SQL + 'dcl.[PRIMARYADDRESSCOUNTY], '
end
if @GROUP1 = 'CITY' or @GROUP2 = 'CITY' or @GROUP3 = 'CITY'
begin
set @Select1SQL = @Select1SQL + 'm.[CITY], '
set @Select2SQL = @Select2SQL + 'dcl.[PRIMARYADDRESSCITY] as [CITY], '
set @Select3SQL = @Select3SQL + 'dcl.[PRIMARYADDRESSCITY] as [CITY], '
set @Select4SQL = @Select4SQL + 'dcl.[PRIMARYADDRESSCITY] as [CITY], '
set @Group1SQL = @Group1SQL + 'm.[CITY], '
set @Group2SQL = @Group2SQL + 'dcl.[PRIMARYADDRESSCITY], '
set @Group3SQL = @Group3SQL + 'dcl.[PRIMARYADDRESSCITY], '
set @Group4SQL = @Group4SQL + 'dcl.[PRIMARYADDRESSCITY], '
end
if @GROUP1 = 'POSTCODE' or @GROUP2 = 'POSTCODE' or @GROUP3 = 'POSTCODE'
begin
set @Select1SQL = @Select1SQL + 'm.[POSTCODE], '
set @Select2SQL = @Select2SQL + 'dcl.[PRIMARYADDRESSPOSTCODE] as [POSTCODE], '
set @Select3SQL = @Select3SQL + 'dcl.[PRIMARYADDRESSPOSTCODE] as [POSTCODE], '
set @Select4SQL = @Select4SQL + 'dcl.[PRIMARYADDRESSPOSTCODE] as [POSTCODE], '
set @Group1SQL = @Group1SQL + 'm.[POSTCODE], '
set @Group2SQL = @Group2SQL + 'dcl.[PRIMARYADDRESSPOSTCODE], '
set @Group3SQL = @Group3SQL + 'dcl.[PRIMARYADDRESSPOSTCODE], '
set @Group4SQL = @Group4SQL + 'dcl.[PRIMARYADDRESSPOSTCODE], '
end
if @GROUP1 = 'ETHNICITY' or @GROUP2 = 'ETHNICITY' or @GROUP3 = 'ETHNICITY'
begin
set @Select1SQL = @Select1SQL + 'm.[ETHNICITY], '
set @Select2SQL = @Select2SQL + 'isnull(e.[ETHNICITY], ''No Ethnicity'') as [ETHNICITY], '
set @Select3SQL = @Select3SQL + 'isnull(e.[ETHNICITY], ''No Ethnicity'') as [ETHNICITY], '
set @Select4SQL = @Select4SQL + 'isnull(e.[ETHNICITY], ''No Ethnicity'') as [ETHNICITY], '
set @Group1SQL = @Group1SQL + 'm.[ETHNICITY], '
set @Group2SQL = @Group2SQL + 'isnull(e.[ETHNICITY], ''No Ethnicity''), '
set @Group3SQL = @Group3SQL + 'isnull(e.[ETHNICITY], ''No Ethnicity''), '
set @Group4SQL = @Group4SQL + 'isnull(e.[ETHNICITY], ''No Ethnicity''), '
end
if (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR')) and
(@GROUP1 <> 'CALENDARMONTHYEARNAME' and @GROUP2 <> 'CALENDARMONTHYEARNAME' and @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'm.[FISCALYEAR], m.[CALENDARYEAR], '
set @Select2SQL = @Select2SQL + '(select top 1 [FISCALYEAR] from [YEARS] order by [LASTDATEDIMID] desc) as [FISCALYEAR], (select top 1 [CALENDARYEAR] from [YEARS] order by [LASTDATEDIMID] desc) as [CALENDARYEAR], '
set @Select3SQL = @Select3SQL + 'cy.[FISCALYEAR], cy.[CALENDARYEAR], '
set @Group1SQL = @Group1SQL + 'm.[FISCALYEAR], m.[CALENDARYEAR], '
set @Group3SQL = @Group3SQL + 'cy.[FISCALYEAR], cy.[CALENDARYEAR], '
end
if (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME') and
(@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR'))
begin
set @Select1SQL = @Select1SQL + 'm.[CALENDARYEAR], m.[CALENDARMONTHYEARNAME], m.[CALENDARMONTH], m.[FISCALYEAR], '
set @Select2SQL = @Select2SQL + '(select top 1 [CALENDARYEAR] from [MONTHS] order by [LASTDATEDIMID] desc) as [CALENDARYEAR], (select top 1 [CALENDARMONTHYEARNAME] from [MONTHS] order by [LASTDATEDIMID] desc) as [CALENDARMONTHYEARNAME], (select top 1 [CALENDARMONTH] from [MONTHS] order by [LASTDATEDIMID] desc) as [CALENDARMONTH], (select top 1 [FISCALYEAR] from [MONTHS] order by [LASTDATEDIMID] desc) as [FISCALYEAR], '
set @Select4SQL = @Select4SQL + 'cm.[CALENDARYEAR], cm.[CALENDARMONTHYEARNAME], cm.[CALENDARMONTH], cm.[FISCALYEAR], '
set @Group1SQL = @Group1SQL + 'm.[CALENDARYEAR], m.[CALENDARMONTHYEARNAME], m.[CALENDARMONTH], m.[FISCALYEAR], '
set @Group4SQL = @Group4SQL + 'cm.[CALENDARYEAR], cm.[CALENDARMONTHYEARNAME], cm.[CALENDARMONTH], cm.[FISCALYEAR], '
end
if (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME') and
(@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR'))
begin
set @Select1SQL = @Select1SQL + 'm.[FISCALYEAR], m.[CALENDARYEAR], m.[CALENDARMONTHYEARNAME], m.[CALENDARMONTH], '
set @Select2SQL = @Select2SQL + '(select top 1 [FISCALYEAR] from [MONTHS] order by [LASTDATEDIMID] desc) as [FISCALYEAR], (select top 1 [CALENDARYEAR] from [MONTHS] order by [LASTDATEDIMID] desc) as [CALENDARYEAR], (select top 1 [CALENDARMONTHYEARNAME] from [MONTHS] order by [LASTDATEDIMID] desc) as [CALENDARMONTHYEARNAME], (select top 1 [CALENDARMONTH] from [MONTHS] order by [LASTDATEDIMID] desc) as [CALENDARMONTH], '
set @Select3SQL = @Select3SQL + 'cy.[FISCALYEAR], cy.[CALENDARYEAR], (select top 1 [CALENDARMONTHYEARNAME] from [MONTHS] where [MONTHS].[CALENDARYEAR] = cy.[CALENDARYEAR] order by [LASTDATEDIMID] desc) as [CALENDARMONTHYEARNAME], (select top 1 [CALENDARMONTH] from [MONTHS] where [MONTHS].[CALENDARYEAR] = cy.[CALENDARYEAR] order by [LASTDATEDIMID] desc) as [CALENDARMONTH], '
set @Select4SQL = @Select4SQL + 'cm.[FISCALYEAR], cm.[CALENDARYEAR], cm.[CALENDARMONTHYEARNAME], cm.[CALENDARMONTH], '
set @Group1SQL = @Group1SQL + 'm.[FISCALYEAR], m.[CALENDARYEAR], m.[CALENDARMONTHYEARNAME], m.[CALENDARMONTH], '
set @Group3SQL = @Group3SQL + 'cy.[FISCALYEAR], cy.[CALENDARYEAR], '
set @Group4SQL = @Group4SQL + 'cm.[FISCALYEAR], cm.[CALENDARYEAR], cm.[CALENDARMONTHYEARNAME], cm.[CALENDARMONTH], '
end
--Add Totals
--Upgrades
--No date groupings
if (@DATA1 = 'UPGRADE' or @DATA2 = 'UPGRADE' or @DATA3 = 'UPGRADE' or @DATA4 = 'UPGRADE' or @DATA5 = 'UPGRADE' or @DATA6 = 'UPGRADE' or @DATA7 = 'UPGRADE' or @DATA8 = 'UPGRADE' or @DATA9 = 'UPGRADE' or @DATA10 = 'UPGRADE' or @DATA11 = 'UPGRADE' or @DATA12 = 'UPGRADE')
and (@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME'))
begin
set @Select1SQL = @Select1SQL + 'sum(m.[UPGRADE]) as [UPGRADE], '
set @Select2SQL = @Select2SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 2 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between ' + @STARTDATEDIMID + ' and ' + @ENDDATEDIMID + ' then 1 else 0 end) as [UPGRADE], '
end
--By Year
if (@DATA1 = 'UPGRADE' or @DATA2 = 'UPGRADE' or @DATA3 = 'UPGRADE' or @DATA4 = 'UPGRADE' or @DATA5 = 'UPGRADE' or @DATA6 = 'UPGRADE' or @DATA7 = 'UPGRADE' or @DATA8 = 'UPGRADE' or @DATA9 = 'UPGRADE' or @DATA10 = 'UPGRADE' or @DATA11 = 'UPGRADE' or @DATA12 = 'UPGRADE')
and (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR'))
and (@GROUP1 <> 'CALENDARMONTHYEARNAME' and @GROUP2 <> 'CALENDARMONTHYEARNAME' and @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[UPGRADE]) as [UPGRADE], '
set @Select2SQL = @Select2SQL + '0 as [UPGRADE], '
set @Select3SQL = @Select3SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 2 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cy.[FIRSTDATEDIMID] and cy.[LASTDATEDIMID] then 1 else 0 end) as [UPGRADE], '
end
--By Month
if (@DATA1 = 'UPGRADE' or @DATA2 = 'UPGRADE' or @DATA3 = 'UPGRADE' or @DATA4 = 'UPGRADE' or @DATA5 = 'UPGRADE' or @DATA6 = 'UPGRADE' or @DATA7 = 'UPGRADE' or @DATA8 = 'UPGRADE' or @DATA9 = 'UPGRADE' or @DATA10 = 'UPGRADE' or @DATA11 = 'UPGRADE' or @DATA12 = 'UPGRADE')
and (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[UPGRADE]) as [UPGRADE], '
set @Select2SQL = @Select2SQL + '0 as [UPGRADE], '
set @Select3SQL = @Select3SQL + '0 as [UPGRADE], '
set @Select4SQL = @Select4SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 2 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cm.[FIRSTDATEDIMID] and cm.[LASTDATEDIMID] then 1 else 0 end) as [UPGRADE], '
end
--Downgrades
--No date groupings
if (@DATA1 = 'DOWNGRADE' or @DATA2 = 'DOWNGRADE' or @DATA3 = 'DOWNGRADE' or @DATA4 = 'DOWNGRADE' or @DATA5 = 'DOWNGRADE' or @DATA6 = 'DOWNGRADE' or @DATA7 = 'DOWNGRADE' or @DATA8 = 'DOWNGRADE' or @DATA9 = 'DOWNGRADE' or @DATA10 = 'DOWNGRADE' or @DATA11 = 'DOWNGRADE' or @DATA12 = 'DOWNGRADE')
and (@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME'))
begin
set @Select1SQL = @Select1SQL + 'sum(m.[DOWNGRADE]) as [DOWNGRADE], '
set @Select2SQL = @Select2SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 3 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between ' + @STARTDATEDIMID + ' and ' + @ENDDATEDIMID + ' then 1 else 0 end) as [DOWNGRADE], '
end
--By Year
if (@DATA1 = 'DOWNGRADE' or @DATA2 = 'DOWNGRADE' or @DATA3 = 'DOWNGRADE' or @DATA4 = 'DOWNGRADE' or @DATA5 = 'DOWNGRADE' or @DATA6 = 'DOWNGRADE' or @DATA7 = 'DOWNGRADE' or @DATA8 = 'DOWNGRADE' or @DATA9 = 'DOWNGRADE' or @DATA10 = 'DOWNGRADE' or @DATA11 = 'DOWNGRADE' or @DATA12 = 'DOWNGRADE')
and (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR'))
and (@GROUP1 <> 'CALENDARMONTHYEARNAME' and @GROUP2 <> 'CALENDARMONTHYEARNAME' and @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[DOWNGRADE]) as [DOWNGRADE], '
set @Select2SQL = @Select2SQL + '0 as [DOWNGRADE], '
set @Select3SQL = @Select3SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 3 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cy.[FIRSTDATEDIMID] and cy.[LASTDATEDIMID] then 1 else 0 end) as [DOWNGRADE], '
end
--By Month
if (@DATA1 = 'DOWNGRADE' or @DATA2 = 'DOWNGRADE' or @DATA3 = 'DOWNGRADE' or @DATA4 = 'DOWNGRADE' or @DATA5 = 'DOWNGRADE' or @DATA6 = 'DOWNGRADE' or @DATA7 = 'DOWNGRADE' or @DATA8 = 'DOWNGRADE' or @DATA9 = 'DOWNGRADE' or @DATA10 = 'DOWNGRADE' or @DATA11 = 'DOWNGRADE' or @DATA12 = 'DOWNGRADE')
and (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[DOWNGRADE]) as [DOWNGRADE], '
set @Select2SQL = @Select2SQL + '0 as [DOWNGRADE], '
set @Select3SQL = @Select3SQL + '0 as [DOWNGRADE], '
set @Select4SQL = @Select4SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 3 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cm.[FIRSTDATEDIMID] and cm.[LASTDATEDIMID] then 1 else 0 end) as [DOWNGRADE], '
end
--Renew
--No date groupings
if (@DATA1 = 'RENEW' or @DATA2 = 'RENEW' or @DATA3 = 'RENEW' or @DATA4 = 'RENEW' or @DATA5 = 'RENEW' or @DATA6 = 'RENEW' or @DATA7 = 'RENEW' or @DATA8 = 'RENEW' or @DATA9 = 'RENEW' or @DATA10 = 'RENEW' or @DATA11 = 'RENEW' or @DATA12 = 'RENEW')
and (@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME'))
begin
set @Select1SQL = @Select1SQL + 'sum(m.[RENEW]) as [RENEW], '
set @Select2SQL = @Select2SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 1 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between ' + @STARTDATEDIMID + ' and ' + @ENDDATEDIMID + ' then 1 else 0 end) as [RENEW], '
end
--By Year
if (@DATA1 = 'RENEW' or @DATA2 = 'RENEW' or @DATA3 = 'RENEW' or @DATA4 = 'RENEW' or @DATA5 = 'RENEW' or @DATA6 = 'RENEW' or @DATA7 = 'RENEW' or @DATA8 = 'RENEW' or @DATA9 = 'RENEW' or @DATA10 = 'RENEW' or @DATA11 = 'RENEW' or @DATA12 = 'RENEW')
and (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR'))
and (@GROUP1 <> 'CALENDARMONTHYEARNAME' and @GROUP2 <> 'CALENDARMONTHYEARNAME' and @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[RENEW]) as [RENEW], '
set @Select2SQL = @Select2SQL + '0 as [RENEW], '
set @Select3SQL = @Select3SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 1 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cy.[FIRSTDATEDIMID] and cy.[LASTDATEDIMID] then 1 else 0 end) as [RENEW], '
end
--By Month
if (@DATA1 = 'RENEW' or @DATA2 = 'RENEW' or @DATA3 = 'RENEW' or @DATA4 = 'RENEW' or @DATA5 = 'RENEW' or @DATA6 = 'RENEW' or @DATA7 = 'RENEW' or @DATA8 = 'RENEW' or @DATA9 = 'RENEW' or @DATA10 = 'RENEW' or @DATA11 = 'RENEW' or @DATA12 = 'RENEW')
and (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[RENEW]) as [RENEW], '
set @Select2SQL = @Select2SQL + '0 as [RENEW], '
set @Select3SQL = @Select3SQL + '0 as [RENEW], '
set @Select4SQL = @Select4SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 1 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cm.[FIRSTDATEDIMID] and cm.[LASTDATEDIMID] then 1 else 0 end) as [RENEW], '
end
--Join
--No date groupings
if (@DATA1 in ('JOIN', 'RETENTIONRATE') or @DATA2 in ('JOIN', 'RETENTIONRATE') or @DATA3 in ('JOIN', 'RETENTIONRATE') or @DATA4 in ('JOIN', 'RETENTIONRATE') or @DATA5 in ('JOIN', 'RETENTIONRATE') or @DATA6 in ('JOIN', 'RETENTIONRATE') or @DATA7 in ('JOIN', 'RETENTIONRATE') or @DATA8 in ('JOIN', 'RETENTIONRATE') or @DATA9 in ('JOIN', 'RETENTIONRATE') or @DATA10 in ('JOIN', 'RETENTIONRATE') or @DATA11 in ('JOIN', 'RETENTIONRATE') or @DATA12 in ('JOIN', 'RETENTIONRATE'))
and (@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME'))
begin
set @Select1SQL = @Select1SQL + 'sum(m.[JOIN]) as [JOIN], '
set @Select2SQL = @Select2SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 0 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between ' + @STARTDATEDIMID + ' and ' + @ENDDATEDIMID + ' then 1 else 0 end) as [JOIN], '
end
--By Year
if (@DATA1 in ('JOIN', 'RETENTIONRATE') or @DATA2 in ('JOIN', 'RETENTIONRATE') or @DATA3 in ('JOIN', 'RETENTIONRATE') or @DATA4 in ('JOIN', 'RETENTIONRATE') or @DATA5 in ('JOIN', 'RETENTIONRATE') or @DATA6 in ('JOIN', 'RETENTIONRATE') or @DATA7 in ('JOIN', 'RETENTIONRATE') or @DATA8 in ('JOIN', 'RETENTIONRATE') or @DATA9 in ('JOIN', 'RETENTIONRATE') or @DATA10 in ('JOIN', 'RETENTIONRATE') or @DATA11 in ('JOIN', 'RETENTIONRATE') or @DATA12 in ('JOIN', 'RETENTIONRATE'))
and (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR'))
and (@GROUP1 <> 'CALENDARMONTHYEARNAME' and @GROUP2 <> 'CALENDARMONTHYEARNAME' and @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[JOIN]) as [JOIN], '
set @Select2SQL = @Select2SQL + '0 as [JOIN], '
set @Select3SQL = @Select3SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 0 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cy.[FIRSTDATEDIMID] and cy.[LASTDATEDIMID] then 1 else 0 end) as [JOIN], '
end
--By Month
if (@DATA1 in ('JOIN', 'RETENTIONRATE') or @DATA2 in ('JOIN', 'RETENTIONRATE') or @DATA3 in ('JOIN', 'RETENTIONRATE') or @DATA4 in ('JOIN', 'RETENTIONRATE') or @DATA5 in ('JOIN', 'RETENTIONRATE') or @DATA6 in ('JOIN', 'RETENTIONRATE') or @DATA7 in ('JOIN', 'RETENTIONRATE') or @DATA8 in ('JOIN', 'RETENTIONRATE') or @DATA9 in ('JOIN', 'RETENTIONRATE') or @DATA10 in ('JOIN', 'RETENTIONRATE') or @DATA11 in ('JOIN', 'RETENTIONRATE') or @DATA12 in ('JOIN', 'RETENTIONRATE'))
and (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[JOIN]) as [JOIN], '
set @Select2SQL = @Select2SQL + '0 as [JOIN], '
set @Select3SQL = @Select3SQL + '0 as [JOIN], '
set @Select4SQL = @Select4SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 0 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cm.[FIRSTDATEDIMID] and cm.[LASTDATEDIMID] then 1 else 0 end) as [JOIN], '
end
--Rejoin
--No date groupings
if (@DATA1 in ('REJOIN', 'RETENTIONRATE') or @DATA2 in ('REJOIN', 'RETENTIONRATE') or @DATA3 in ('REJOIN', 'RETENTIONRATE') or @DATA4 in ('REJOIN', 'RETENTIONRATE') or @DATA5 in ('REJOIN', 'RETENTIONRATE') or @DATA6 in ('REJOIN', 'RETENTIONRATE') or @DATA7 in ('REJOIN', 'RETENTIONRATE') or @DATA8 in ('REJOIN', 'RETENTIONRATE') or @DATA9 in ('REJOIN', 'RETENTIONRATE') or @DATA10 in ('REJOIN', 'RETENTIONRATE') or @DATA11 in ('REJOIN', 'RETENTIONRATE') or @DATA12 in ('REJOIN', 'RETENTIONRATE'))
and (@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME'))
begin
set @Select1SQL = @Select1SQL + 'sum(m.[REJOIN]) as [REJOIN], '
set @Select2SQL = @Select2SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 5 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between ' + @STARTDATEDIMID + ' and ' + @ENDDATEDIMID + ' then 1 else 0 end) as [REJOIN], '
end
--By Year
if (@DATA1 in ('REJOIN', 'RETENTIONRATE') or @DATA2 in ('REJOIN', 'RETENTIONRATE') or @DATA3 in ('REJOIN', 'RETENTIONRATE') or @DATA4 in ('REJOIN', 'RETENTIONRATE') or @DATA5 in ('REJOIN', 'RETENTIONRATE') or @DATA6 in ('REJOIN', 'RETENTIONRATE') or @DATA7 in ('REJOIN', 'RETENTIONRATE') or @DATA8 in ('REJOIN', 'RETENTIONRATE') or @DATA9 in ('REJOIN', 'RETENTIONRATE') or @DATA10 in ('REJOIN', 'RETENTIONRATE') or @DATA11 in ('REJOIN', 'RETENTIONRATE') or @DATA12 in ('REJOIN', 'RETENTIONRATE'))
and (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR'))
and (@GROUP1 <> 'CALENDARMONTHYEARNAME' and @GROUP2 <> 'CALENDARMONTHYEARNAME' and @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[REJOIN]) as [REJOIN], '
set @Select2SQL = @Select2SQL + '0 as [REJOIN], '
set @Select3SQL = @Select3SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 5 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cy.[FIRSTDATEDIMID] and cy.[LASTDATEDIMID] then 1 else 0 end) as [REJOIN], '
end
--By Month
if (@DATA1 in ('REJOIN', 'RETENTIONRATE') or @DATA2 in ('REJOIN', 'RETENTIONRATE') or @DATA3 in ('REJOIN', 'RETENTIONRATE') or @DATA4 in ('REJOIN', 'RETENTIONRATE') or @DATA5 in ('REJOIN', 'RETENTIONRATE') or @DATA6 in ('REJOIN', 'RETENTIONRATE') or @DATA7 in ('REJOIN', 'RETENTIONRATE') or @DATA8 in ('REJOIN', 'RETENTIONRATE') or @DATA9 in ('REJOIN', 'RETENTIONRATE') or @DATA10 in ('REJOIN', 'RETENTIONRATE') or @DATA11 in ('REJOIN', 'RETENTIONRATE') or @DATA12 in ('REJOIN', 'RETENTIONRATE'))
and (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[REJOIN]) as [REJOIN], '
set @Select2SQL = @Select2SQL + '0 as [REJOIN], '
set @Select3SQL = @Select3SQL + '0 as [REJOIN], '
set @Select4SQL = @Select4SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 5 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cm.[FIRSTDATEDIMID] and cm.[LASTDATEDIMID] then 1 else 0 end) as [REJOIN], '
end
--Drop
--No date groupings
if (@DATA1 = 'DROP' or @DATA2 = 'DROP' or @DATA3 = 'DROP' or @DATA4 = 'DROP' or @DATA5 = 'DROP' or @DATA6 = 'DROP' or @DATA7 = 'DROP' or @DATA8 = 'DROP' or @DATA9 = 'DROP' or @DATA10 = 'DROP' or @DATA11 = 'DROP' or @DATA12 = 'DROP')
and (@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME'))
begin
set @Select1SQL = @Select1SQL + 'sum(m.[DROP]) as [DROP], '
set @Select2SQL = @Select2SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 4 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between ' + @STARTDATEDIMID + ' and ' + @ENDDATEDIMID + ' then 1 else 0 end) as [DROP], '
end
--By Year
if (@DATA1 = 'DROP' or @DATA2 = 'DROP' or @DATA3 = 'DROP' or @DATA4 = 'DROP' or @DATA5 = 'DROP' or @DATA6 = 'DROP' or @DATA7 = 'DROP' or @DATA8 = 'DROP' or @DATA9 = 'DROP' or @DATA10 = 'DROP' or @DATA11 = 'DROP' or @DATA12 = 'DROP')
and (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR'))
and (@GROUP1 <> 'CALENDARMONTHYEARNAME' and @GROUP2 <> 'CALENDARMONTHYEARNAME' and @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[DROP]) as [DROP], '
set @Select2SQL = @Select2SQL + '0 as [DROP], '
set @Select3SQL = @Select3SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 4 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cy.[FIRSTDATEDIMID] and cy.[LASTDATEDIMID] then 1 else 0 end) as [DROP], '
end
--By Month
if (@DATA1 = 'DROP' or @DATA2 = 'DROP' or @DATA3 = 'DROP' or @DATA4 = 'DROP' or @DATA5 = 'DROP' or @DATA6 = 'DROP' or @DATA7 = 'DROP' or @DATA8 = 'DROP' or @DATA9 = 'DROP' or @DATA10 = 'DROP' or @DATA11 = 'DROP' or @DATA12 = 'DROP')
and (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[DROP]) as [DROP], '
set @Select2SQL = @Select2SQL + '0 as [DROP], '
set @Select3SQL = @Select3SQL + '0 as [DROP], '
set @Select4SQL = @Select4SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 4 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cm.[FIRSTDATEDIMID] and cm.[LASTDATEDIMID] then 1 else 0 end) as [DROP], '
end
--Expiring
--No date groupings
if (@DATA1 = 'EXPIRING' or @DATA2 = 'EXPIRING' or @DATA3 = 'EXPIRING' or @DATA4 = 'EXPIRING' or @DATA5 = 'EXPIRING' or @DATA6 = 'EXPIRING' or @DATA7 = 'EXPIRING' or @DATA8 = 'EXPIRING' or @DATA9 = 'EXPIRING' or @DATA10 = 'EXPIRING' or @DATA11 = 'EXPIRING' or @DATA12 = 'EXPIRING')
and (@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME'))
begin
set @Select1SQL = @Select1SQL + 'sum(m.[EXPIRING]) as [EXPIRING], '
set @Select2SQL = @Select2SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 99 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between ' + @STARTDATEDIMID + ' and ' + @ENDDATEDIMID + ' then 1 else 0 end) as [EXPIRING], '
end
--By Year
if (@DATA1 = 'EXPIRING' or @DATA2 = 'EXPIRING' or @DATA3 = 'EXPIRING' or @DATA4 = 'EXPIRING' or @DATA5 = 'EXPIRING' or @DATA6 = 'EXPIRING' or @DATA7 = 'EXPIRING' or @DATA8 = 'EXPIRING' or @DATA9 = 'EXPIRING' or @DATA10 = 'EXPIRING' or @DATA11 = 'EXPIRING' or @DATA12 = 'EXPIRING')
and (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR'))
and (@GROUP1 <> 'CALENDARMONTHYEARNAME' and @GROUP2 <> 'CALENDARMONTHYEARNAME' and @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[EXPIRING]) as [EXPIRING], '
set @Select2SQL = @Select2SQL + '0 as [EXPIRING], '
set @Select3SQL = @Select3SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 99 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cy.[FIRSTDATEDIMID] and cy.[LASTDATEDIMID] then 1 else 0 end) as [EXPIRING], '
end
--By Month
if (@DATA1 = 'EXPIRING' or @DATA2 = 'EXPIRING' or @DATA3 = 'EXPIRING' or @DATA4 = 'EXPIRING' or @DATA5 = 'EXPIRING' or @DATA6 = 'EXPIRING' or @DATA7 = 'EXPIRING' or @DATA8 = 'EXPIRING' or @DATA9 = 'EXPIRING' or @DATA10 = 'EXPIRING' or @DATA11 = 'EXPIRING' or @DATA12 = 'EXPIRING')
and (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[EXPIRING]) as [EXPIRING], '
set @Select2SQL = @Select2SQL + '0 as [EXPIRING], '
set @Select3SQL = @Select3SQL + '0 as [EXPIRING], '
set @Select4SQL = @Select4SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 99 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cm.[FIRSTDATEDIMID] and cm.[LASTDATEDIMID] then 1 else 0 end) as [EXPIRING], '
end
--Lapsed
--No date groupings
if (@DATA1 = 'LAPSED' or @DATA2 = 'LAPSED' or @DATA3 = 'LAPSED' or @DATA4 = 'LAPSED' or @DATA5 = 'LAPSED' or @DATA6 = 'LAPSED' or @DATA7 = 'LAPSED' or @DATA8 = 'LAPSED' or @DATA9 = 'LAPSED' or @DATA10 = 'LAPSED' or @DATA11 = 'LAPSED' or @DATA12 = 'LAPSED')
and (@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME'))
begin
set @Select1SQL = @Select1SQL + 'sum(m.[LAPSED]) as [LAPSED], '
set @Select2SQL = @Select2SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 104 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between ' + @STARTDATEDIMID + ' and ' + @ENDDATEDIMID + ' then 1 else 0 end) as [LAPSED], '
end
--By Year
if (@DATA1 = 'LAPSED' or @DATA2 = 'LAPSED' or @DATA3 = 'LAPSED' or @DATA4 = 'LAPSED' or @DATA5 = 'LAPSED' or @DATA6 = 'LAPSED' or @DATA7 = 'LAPSED' or @DATA8 = 'LAPSED' or @DATA9 = 'LAPSED' or @DATA10 = 'LAPSED' or @DATA11 = 'LAPSED' or @DATA12 = 'LAPSED')
and (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR'))
and (@GROUP1 <> 'CALENDARMONTHYEARNAME' and @GROUP2 <> 'CALENDARMONTHYEARNAME' and @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[LAPSED]) as [LAPSED], '
set @Select2SQL = @Select2SQL + '0 as [LAPSED], '
set @Select3SQL = @Select3SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 104 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cy.[FIRSTDATEDIMID] and cy.[LASTDATEDIMID] then 1 else 0 end) as [LAPSED], '
end
--By Month
if (@DATA1 = 'LAPSED' or @DATA2 = 'LAPSED' or @DATA3 = 'LAPSED' or @DATA4 = 'LAPSED' or @DATA5 = 'LAPSED' or @DATA6 = 'LAPSED' or @DATA7 = 'LAPSED' or @DATA8 = 'LAPSED' or @DATA9 = 'LAPSED' or @DATA10 = 'LAPSED' or @DATA11 = 'LAPSED' or @DATA12 = 'LAPSED')
and (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[LAPSED]) as [LAPSED], '
set @Select2SQL = @Select2SQL + '0 as [LAPSED], '
set @Select3SQL = @Select3SQL + '0 as [LAPSED], '
set @Select4SQL = @Select4SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 104 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cm.[FIRSTDATEDIMID] and cm.[LASTDATEDIMID] then 1 else 0 end) as [LAPSED], '
end
--Grace
--No date groupings
if (@DATA1 = 'LAPSED_GRACE' or @DATA2 = 'LAPSED_GRACE' or @DATA3 = 'LAPSED_GRACE' or @DATA4 = 'LAPSED_GRACE' or @DATA5 = 'LAPSED_GRACE' or @DATA6 = 'LAPSED_GRACE' or @DATA7 = 'LAPSED_GRACE' or @DATA8 = 'LAPSED_GRACE' or @DATA9 = 'LAPSED_GRACE' or @DATA10 = 'LAPSED_GRACE' or @DATA11 = 'LAPSED_GRACE' or @DATA12 = 'LAPSED_GRACE')
and (@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME'))
begin
set @Select1SQL = @Select1SQL + 'sum(m.[LAPSED_GRACE]) as [LAPSED_GRACE], '
set @Select2SQL = @Select2SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 103 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between ' + @STARTDATEDIMID + ' and ' + @ENDDATEDIMID + ' then 1 else 0 end) as [LAPSED_GRACE], '
end
--By Year
if (@DATA1 = 'LAPSED_GRACE' or @DATA2 = 'LAPSED_GRACE' or @DATA3 = 'LAPSED_GRACE' or @DATA4 = 'LAPSED_GRACE' or @DATA5 = 'LAPSED_GRACE' or @DATA6 = 'LAPSED_GRACE' or @DATA7 = 'LAPSED_GRACE' or @DATA8 = 'LAPSED_GRACE' or @DATA9 = 'LAPSED_GRACE' or @DATA10 = 'LAPSED_GRACE' or @DATA11 = 'LAPSED_GRACE' or @DATA12 = 'LAPSED_GRACE')
and (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR'))
and (@GROUP1 <> 'CALENDARMONTHYEARNAME' and @GROUP2 <> 'CALENDARMONTHYEARNAME' and @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[LAPSED_GRACE]) as [LAPSED_GRACE], '
set @Select2SQL = @Select2SQL + '0 as [LAPSED_GRACE], '
set @Select3SQL = @Select3SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 103 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cy.[FIRSTDATEDIMID] and cy.[LASTDATEDIMID] then 1 else 0 end) as [LAPSED_GRACE], '
end
--By Month
if (@DATA1 = 'LAPSED_GRACE' or @DATA2 = 'LAPSED_GRACE' or @DATA3 = 'LAPSED_GRACE' or @DATA4 = 'LAPSED_GRACE' or @DATA5 = 'LAPSED_GRACE' or @DATA6 = 'LAPSED_GRACE' or @DATA7 = 'LAPSED_GRACE' or @DATA8 = 'LAPSED_GRACE' or @DATA9 = 'LAPSED_GRACE' or @DATA10 = 'LAPSED_GRACE' or @DATA11 = 'LAPSED_GRACE' or @DATA12 = 'LAPSED_GRACE')
and (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[LAPSED_GRACE]) as [LAPSED_GRACE], '
set @Select2SQL = @Select2SQL + '0 as [LAPSED_GRACE], '
set @Select3SQL = @Select3SQL + '0 as [LAPSED_GRACE], '
set @Select4SQL = @Select4SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 103 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cm.[FIRSTDATEDIMID] and cm.[LASTDATEDIMID] then 1 else 0 end) as [LAPSED_GRACE], '
end
--Expired
--No date groupings
if (@DATA1 = 'EXPIRED' or @DATA2 = 'EXPIRED' or @DATA3 = 'EXPIRED' or @DATA4 = 'EXPIRED' or @DATA5 = 'EXPIRED' or @DATA6 = 'EXPIRED' or @DATA7 = 'EXPIRED' or @DATA8 = 'EXPIRED' or @DATA9 = 'EXPIRED' or @DATA10 = 'EXPIRED' or @DATA11 = 'EXPIRED' or @DATA12 = 'EXPIRED')
and (@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME'))
begin
set @Select1SQL = @Select1SQL + 'sum(m.[EXPIRED]) as [EXPIRED], '
set @Select2SQL = @Select2SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 105 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between ' + @STARTDATEDIMID + ' and ' + @ENDDATEDIMID + ' then 1 else 0 end) as [EXPIRED], '
end
--By Year
if (@DATA1 = 'EXPIRED' or @DATA2 = 'EXPIRED' or @DATA3 = 'EXPIRED' or @DATA4 = 'EXPIRED' or @DATA5 = 'EXPIRED' or @DATA6 = 'EXPIRED' or @DATA7 = 'EXPIRED' or @DATA8 = 'EXPIRED' or @DATA9 = 'EXPIRED' or @DATA10 = 'EXPIRED' or @DATA11 = 'EXPIRED' or @DATA12 = 'EXPIRED')
and (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR'))
and (@GROUP1 <> 'CALENDARMONTHYEARNAME' and @GROUP2 <> 'CALENDARMONTHYEARNAME' and @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[EXPIRED]) as [EXPIRED], '
set @Select2SQL = @Select2SQL + '0 as [EXPIRED], '
set @Select3SQL = @Select3SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 105 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cy.[FIRSTDATEDIMID] and cy.[LASTDATEDIMID] then 1 else 0 end) as [EXPIRED], '
end
--By Month
if (@DATA1 = 'EXPIRED' or @DATA2 = 'EXPIRED' or @DATA3 = 'EXPIRED' or @DATA4 = 'EXPIRED' or @DATA5 = 'EXPIRED' or @DATA6 = 'EXPIRED' or @DATA7 = 'EXPIRED' or @DATA8 = 'EXPIRED' or @DATA9 = 'EXPIRED' or @DATA10 = 'EXPIRED' or @DATA11 = 'EXPIRED' or @DATA12 = 'EXPIRED')
and (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[EXPIRED]) as [EXPIRED], '
set @Select2SQL = @Select2SQL + '0 as [EXPIRED], '
set @Select3SQL = @Select3SQL + '0 as [EXPIRED], '
set @Select4SQL = @Select4SQL + 'sum(case when dma.[MEMBERSHIPACTIONCODE] = 105 and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between cm.[FIRSTDATEDIMID] and cm.[LASTDATEDIMID] then 1 else 0 end) as [EXPIRED], '
end
--Active Memberships
--No date groupings
if (@DATA1 = 'MEMBERSHIPS' or @DATA2 = 'MEMBERSHIPS' or @DATA3 = 'MEMBERSHIPS' or @DATA4 = 'MEMBERSHIPS' or @DATA5 = 'MEMBERSHIPS' or @DATA6 = 'MEMBERSHIPS' or @DATA7 = 'MEMBERSHIPS' or @DATA8 = 'MEMBERSHIPS' or @DATA9 = 'MEMBERSHIPS' or @DATA10 = 'MEMBERSHIPS' or @DATA11 = 'MEMBERSHIPS' or @DATA12 = 'MEMBERSHIPS')
and (@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME'))
begin
set @Select1SQL = @Select1SQL + 'sum(m.[MEMBERSHIPS]) as [MEMBERSHIPS], '
set @Select2SQL = @Select2SQL + 'max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] <= ' + @ENDDATEDIMID + ' and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] >= ' + @STARTDATEDIMID + ' then 1
else 0
end
) as [MEMBERSHIPS], '
end
--By Year
if (@DATA1 = 'MEMBERSHIPS' or @DATA2 = 'MEMBERSHIPS' or @DATA3 = 'MEMBERSHIPS' or @DATA4 = 'MEMBERSHIPS' or @DATA5 = 'MEMBERSHIPS' or @DATA6 = 'MEMBERSHIPS' or @DATA7 = 'MEMBERSHIPS' or @DATA8 = 'MEMBERSHIPS' or @DATA9 = 'MEMBERSHIPS' or @DATA10 = 'MEMBERSHIPS' or @DATA11 = 'MEMBERSHIPS' or @DATA12 = 'MEMBERSHIPS')
and (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR'))
and (@GROUP1 <> 'CALENDARMONTHYEARNAME' and @GROUP2 <> 'CALENDARMONTHYEARNAME' and @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[MEMBERSHIPS]) as [MEMBERSHIPS], sum(m.[ACTIVEMEMBERSHIPSBYYEAR]) as [ACTIVEMEMBERSHIPSBYYEAR], '
set @Select2SQL = @Select2SQL + 'max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] <= ' + @ENDDATEDIMID + ' and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] >= ' + @STARTDATEDIMID + ' then 1
else 0
end
) as [MEMBERSHIPS], 0 as [ACTIVEMEMBERSHIPSBYYEAR], '
set @Select3SQL = @Select3SQL + '0 as [MEMBERSHIPS],
max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] <= cy.[LASTDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] >= cy.[FIRSTDATEDIMID] then 1
else 0
end
) as [ACTIVEMEMBERSHIPSBYYEAR], '
end
--By Month
if (@DATA1 = 'MEMBERSHIPS' or @DATA2 = 'MEMBERSHIPS' or @DATA3 = 'MEMBERSHIPS' or @DATA4 = 'MEMBERSHIPS' or @DATA5 = 'MEMBERSHIPS' or @DATA6 = 'MEMBERSHIPS' or @DATA7 = 'MEMBERSHIPS' or @DATA8 = 'MEMBERSHIPS' or @DATA9 = 'MEMBERSHIPS' or @DATA10 = 'MEMBERSHIPS' or @DATA11 = 'MEMBERSHIPS' or @DATA12 = 'MEMBERSHIPS')
and (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + 'sum(m.[MEMBERSHIPS]) as [MEMBERSHIPS], sum(m.[ACTIVEMEMBERSHIPSBYYEAR]) as [ACTIVEMEMBERSHIPSBYYEAR], sum(m.[ACTIVEMEMBERSHIPSBYMONTH]) as [ACTIVEMEMBERSHIPSBYMONTH], '
set @Select2SQL = @Select2SQL + 'max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] <= ' + @ENDDATEDIMID + ' and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] >= ' + @STARTDATEDIMID + ' then 1
else 0
end
) as [MEMBERSHIPS], 0 as [ACTIVEMEMBERSHIPSBYYEAR], 0 as [ACTIVEMEMBERSHIPSBYMONTH], '
set @Select3SQL = @Select3SQL + '0 as [MEMBERSHIPS],
max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] <= cy.[LASTDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] >= cy.[FIRSTDATEDIMID] then 1
else 0
end
) as [ACTIVEMEMBERSHIPSBYYEAR], 0 as [ACTIVEMEMBERSHIPSBYMONTH], '
set @Select4SQL = @Select4SQL + '0 as [MEMBERSHIPS],
0 as [ACTIVEMEMBERSHIPSBYYEAR],
max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] <= cm.[LASTDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] >= cm.[FIRSTDATEDIMID] then 1
else 0
end
) as [ACTIVEMEMBERSHIPSBYMONTH], '
end
--Retention Rate
--No date groupings
if (@DATA1 = 'RETENTIONRATE' or @DATA2 = 'RETENTIONRATE' or @DATA3 = 'RETENTIONRATE' or @DATA4 = 'RETENTIONRATE' or @DATA5 = 'RETENTIONRATE' or @DATA6 = 'RETENTIONRATE' or @DATA7 = 'RETENTIONRATE' or @DATA8 = 'RETENTIONRATE' or @DATA9 = 'RETENTIONRATE' or @DATA10 = 'RETENTIONRATE' or @DATA11 = 'RETENTIONRATE' or @DATA12 = 'RETENTIONRATE')
and (@GROUP1 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP2 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME') and @GROUP3 not in ('CALENDARYEAR', 'FISCALYEAR', 'CALENDARMONTHYEARNAME'))
begin
set @Select1SQL = @Select1SQL + '0 as [RETENTIONRATE], sum(m.[MEMBERSHIPSSTART]) as [MEMBERSHIPSSTART],
sum(m.[MEMBERSHIPSEND]) as [MEMBERSHIPSEND], '
set @Select2SQL = @Select2SQL + 'max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and ' + @STARTDATEDIMID + ' between fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] then 1
else 0
end
) as [MEMBERSHIPSSTART],
max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and ' + @ENDDATEDIMID + ' between fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] then 1
else 0
end
) as [MEMBERSHIPSEND], '
end
--By Year
if (@DATA1 = 'RETENTIONRATE' or @DATA2 = 'RETENTIONRATE' or @DATA3 = 'RETENTIONRATE' or @DATA4 = 'RETENTIONRATE' or @DATA5 = 'RETENTIONRATE' or @DATA6 = 'RETENTIONRATE' or @DATA7 = 'RETENTIONRATE' or @DATA8 = 'RETENTIONRATE' or @DATA9 = 'RETENTIONRATE' or @DATA10 = 'RETENTIONRATE' or @DATA11 = 'RETENTIONRATE' or @DATA12 = 'RETENTIONRATE')
and (@GROUP1 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP2 in ('CALENDARYEAR', 'FISCALYEAR') or @GROUP3 in ('CALENDARYEAR', 'FISCALYEAR'))
and (@GROUP1 <> 'CALENDARMONTHYEARNAME' and @GROUP2 <> 'CALENDARMONTHYEARNAME' and @GROUP3 <> 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + '0 as [RETENTIONRATE], sum(m.[MEMBERSHIPSSTART]) as [MEMBERSHIPSSTART],
sum(m.[MEMBERSHIPSEND]) as [MEMBERSHIPSEND],
sum(m.[MEMBERSHIPSSTARTBYYEAR]) as [MEMBERSHIPSSTARTBYYEAR],
sum(m.[MEMBERSHIPSENDBYYEAR]) as [MEMBERSHIPSENDBYYEAR], '
set @Select2SQL = @Select2SQL + 'max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and ' + @STARTDATEDIMID + ' between fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] then 1
else 0
end
) as [MEMBERSHIPSSTART],
max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and ' + @ENDDATEDIMID + ' between fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] then 1
else 0
end
) as [MEMBERSHIPSEND],
0 as [MEMBERSHIPSSTARTBYYEAR],
0 as [MEMBERSHIPSENDBYYEAR], '
set @Select3SQL = @Select3SQL + '0 as [MEMBERSHIPSSTART],
0 as [MEMBERSHPSEND],
max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and cy.[FIRSTDATEDIMID] between fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] then 1
else 0
end
) as [MEMBERSHIPSSTARTBYYEAR],
max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and cy.[LASTDATEDIMID] between fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] then 1
else 0
end
) as [MEMBERSHIPSENDBYYEAR], '
end
--By Month
if (@DATA1 = 'RETENTIONRATE' or @DATA2 = 'RETENTIONRATE' or @DATA3 = 'RETENTIONRATE' or @DATA4 = 'RETENTIONRATE' or @DATA5 = 'RETENTIONRATE' or @DATA6 = 'RETENTIONRATE' or @DATA7 = 'RETENTIONRATE' or @DATA8 = 'RETENTIONRATE' or @DATA9 = 'RETENTIONRATE' or @DATA10 = 'RETENTIONRATE' or @DATA11 = 'RETENTIONRATE' or @DATA12 = 'RETENTIONRATE')
and (@GROUP1 = 'CALENDARMONTHYEARNAME' or @GROUP2 = 'CALENDARMONTHYEARNAME' or @GROUP3 = 'CALENDARMONTHYEARNAME')
begin
set @Select1SQL = @Select1SQL + '0 as [RETENTIONRATE], sum(m.[MEMBERSHIPSSTART]) as [MEMBERSHIPSSTART],
sum(m.[MEMBERSHIPSEND]) as [MEMBERSHIPSEND],
sum(m.[MEMBERSHIPSSTARTBYYEAR]) as [MEMBERSHIPSSTARTBYYEAR],
sum(m.[MEMBERSHIPSENDBYYEAR]) as [MEMBERSHIPSENDBYYEAR],
sum(m.[MEMBERSHIPSSTARTBYMONTH]) as [MEMBERSHIPSSTARTBYMONTH],
sum(m.[MEMBERSHIPSENDBYMONTH]) as [MEMBERSHIPSENDBYMONTH] '
set @Select2SQL = @Select2SQL + 'max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and ' + @STARTDATEDIMID + ' between fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] then 1
else 0
end
) as [MEMBERSHIPSSTART],
max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and ' + @ENDDATEDIMID + ' between fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] then 1
else 0
end
) as [MEMBERSHIPSEND],
0 as [MEMBERSHIPSSTARTBYYEAR],
0 as [MEMBERSHIPSENDBYYEAR],
0 as [MEMBERSHIPSSTARTBYMONTH],
0 as [MEMBERSHIPSENDBYMONTH], '
set @Select3SQL = @Select3SQL + '0 as [MEMBERSHIPSSTART],
0 as [MEMBERSHPSEND],
max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and cy.[FIRSTDATEDIMID] between fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] then 1
else 0
end
) as [MEMBERSHIPSSTARTBYYEAR],
max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and cy.[LASTDATEDIMID] between fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] then 1
else 0
end
) as [MEMBERSHIPSENDBYYEAR],
0 as [MEMBERSHIPSSTARTBYMONTH],
0 as [MEMBERSHIPSENDBYMONTH], '
set @Select4SQL = @Select4SQL + '0 as [MEMBERSHIPSSTART],
0 as [MEMBERSHPSEND],
0 as [MEMBERSHIPSSTARTBYYEAR],
0 as [MEMBERSHIPSENDBYYEAR],
max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and cm.[FIRSTDATEDIMID] between fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] then 1
else 0
end
) as [MEMBERSHIPSSTARTBYMONTH],
max(
case
when ms.[MEMBERSHIPSTATUSCODE] in (0, 99) and cm.[LASTDATEDIMID] between fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] and fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] then 1
else 0
end
) as [MEMBERSHIPSENDBYMONTH] '
end
--Clean up any ending commas
if right(@Select1SQL, 2) = ', '
set @Select1SQL = left(@Select1SQL, len(@Select1SQL) - 1) + ' '
if right(@Select2SQL, 2) = ', '
set @Select2SQL = left(@Select2SQL, len(@Select2SQL) - 1) + ' '
if right(@Group2SQL, 2) = ', '
set @Group2SQL = left(@Group2SQL, len(@Group2SQL) - 1) + ' '
if right(@Select3SQL, 2) = ', '
set @Select3SQL = left(@Select3SQL, len(@Select3SQL) - 1) + ' '
if right(@Group3SQL, 2) = ', '
set @Group3SQL = left(@Group3SQL, len(@Group3SQL) - 1) + ' '
if right(@Group1SQL, 2) = ', '
set @Group1SQL = left(@Group1SQL, len(@Group1SQL) - 1) + ' '
if right(@Select4SQL, 2) = ', '
set @Select4SQL = left(@Select4SQL, len(@Select4SQL) - 1) + ' '
if right(@Group4SQL, 2) = ', '
set @Group4SQL = left(@Group4SQL, len(@Group4SQL) - 1) + ' '
--Clean up nulls
if @Select1SQL is null
set @Select1SQL = ''
if @Select2SQL is null
set @Select2SQL = ''
if @Select3SQL is null
set @Select3SQL = ''
if @Select4SQL is null
set @Select4SQL = ''
if @Group1SQL is null
set @Group1SQL = ''
if @Group2SQL is null
set @Group2SQL = ''
if @Group3SQL is null
set @Group3SQL = ''
if @Group4SQL is null
set @Group4SQL = ''
if @From1SQL is null
set @From1SQL = ''
if @From2SQL is null
set @From2SQL = ''
if @From3SQL is null
set @From3SQL = ''
if @From4SQL is null
set @From4SQL = ''
if @Where1SQL is null
set @Where1SQL = ''
if @Where2SQL is null
set @Where2SQL = ''
if @Where3SQL is null
set @Where3SQL = ''
if @Where4SQL is null
set @Where4SQL = ''
--Remove Groupings if no values
if len(@Group1SQL) < 12
set @Group1SQL = ''
if len(@Group2SQL) < 12
set @Group2SQL = ''
if len(@Group3SQL) < 12
set @Group3SQL = ''
if len(@Group4SQL) < 12
set @Group4SQL = ''
--Put it all together
set @SQL = @TableVarSQL + @CTESQL + @Select1SQL + @From1SQL + @Select2SQL + @From2SQL + @Where2SQL + @Group2SQL + @Select3SQL + @From3SQL + @Where3SQL + @Group3SQL + @Select4SQL + @From4SQL + @Where4SQL + @Group4SQL+ @Where1SQL + @Group1SQL
--select @SQL
execute sp_executesql @SQL, N'@PROGRAMFILTERTYPE nvarchar(100)', @PROGRAMFILTERTYPE = @PROGRAMFILTERTYPE