USP_REPORT_MEMBERSHIPACTIVITYDETAIL

Parameters

Parameter Parameter Type Mode Description
@GROUP1 nvarchar(30) IN
@GROUP1VALUE nvarchar(100) IN
@GROUP2 nvarchar(30) IN
@GROUP2VALUE nvarchar(100) IN
@GROUP3 nvarchar(30) IN
@GROUP3VALUE nvarchar(100) IN
@DATALABEL nvarchar(30) IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@MEMBERSHIPPROGRAMS nvarchar(max) IN
@PROGRAMFILTERTYPECODE tinyint IN

Definition

Copy

        create procedure BBDW.[USP_REPORT_MEMBERSHIPACTIVITYDETAIL](
          @GROUP1 nvarchar(30),
          @GROUP1VALUE nvarchar(100),
          @GROUP2 nvarchar(30),
          @GROUP2VALUE nvarchar(100),
          @GROUP3 nvarchar(30),
          @GROUP3VALUE nvarchar(100),
          @DATALABEL nvarchar(30),
          @STARTDATE datetime,
          @ENDDATE datetime,
          @MEMBERSHIPPROGRAMS nvarchar(max),
          @PROGRAMFILTERTYPECODE tinyint = 0
        ) 

        with execute as owner as

        if @DATALABEL = 'LAPSED_GRACE'
        set @DATALABEL = 'Lapsed Grace'

        set @MEMBERSHIPPROGRAMS = REPLACE(@MEMBERSHIPPROGRAMS, '&lt;', '<');
        set @MEMBERSHIPPROGRAMS = REPLACE(@MEMBERSHIPPROGRAMS, '&gt;', '>');

        declare @MEMBERSHIPPROGRAMIDTABLE table (MEMBERSHIPPROGRAMSYSTEMID uniqueidentifier)

        -- 0 = All, 1 = Selected, 2 = None

        if @PROGRAMFILTERTYPECODE = 0
        begin
            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
            insert into @MEMBERSHIPPROGRAMIDTABLE (MEMBERSHIPPROGRAMSYSTEMID)
            select [MEMBERSHIPPROGRAMID] from BBDW.[UFN_MEMBERSHIPPROGRAMS_FROMITEMLISTXML] (@MEMBERSHIPPROGRAMS); 
        end

        if @STARTDATE is null
        set @STARTDATE = '7/4/1776'

        if @ENDDATE is null
        set @ENDDATE = '12/31/5999'

        declare @STARTDATEDIMID int
        declare @ENDDATEDIMID int

        set @STARTDATEDIMID = (year(@STARTDATE) * 10000) + (month(@STARTDATE) * 100) + day(@STARTDATE)
        set @ENDDATEDIMID = (year(@ENDDATE) * 10000) + (month(@ENDDATE) * 100) + day(@ENDDATE)

        declare @MEMBERSHIPPROGRAM nvarchar(100)
        declare @MEMBERSHIPLEVEL nvarchar(100)
        declare @MEMBERSHIPREPORTINGGROUP nvarchar(100)
        declare @COUNTRY nvarchar(100)
        declare @STATE nvarchar(100)
        declare @COUNTY nvarchar(100)
        declare @CITY nvarchar(50)
        declare @POSTCODE nvarchar(12)
        declare @CLASSOF int
        declare @DEGREE nvarchar(150)
        declare @FISCALYEAR smallint
        declare @CALENDARYEAR smallint
        declare @CALENDARMONTHYEARNAME nvarchar(15)
        declare @ETHNICITY nvarchar(100)

        set @MEMBERSHIPPROGRAM =
          case 
            when @GROUP1 = 'MEMBERSHIPPROGRAM' then @GROUP1VALUE
            when @GROUP2 = 'MEMBERSHIPPROGRAM' then @GROUP2VALUE
            when @GROUP3 = 'MEMBERSHIPPROGRAM' then @GROUP3VALUE
            else null
          end

        set @MEMBERSHIPLEVEL =
          case 
            when @GROUP1 = 'MEMBERSHIPLEVEL' then @GROUP1VALUE
            when @GROUP2 = 'MEMBERSHIPLEVEL' then @GROUP2VALUE
            when @GROUP3 = 'MEMBERSHIPLEVEL' then @GROUP3VALUE
            else null
          end

        set @MEMBERSHIPREPORTINGGROUP =
          case 
            when @GROUP1 = 'MEMBERSHIPREPORTINGGROUP' then @GROUP1VALUE
            when @GROUP2 = 'MEMBERSHIPREPORTINGGROUP' then @GROUP2VALUE
            when @GROUP3 = 'MEMBERSHIPREPORTINGGROUP' then @GROUP3VALUE
            else null
          end

        set @COUNTRY =
          case 
            when @GROUP1 = 'COUNTRY' then @GROUP1VALUE
            when @GROUP2 = 'COUNTRY' then @GROUP2VALUE
            when @GROUP3 = 'COUNTRY' then @GROUP3VALUE
            else null
          end

        set @CITY =
          case 
            when @GROUP1 = 'CITY' then @GROUP1VALUE
            when @GROUP2 = 'CITY' then @GROUP2VALUE
            when @GROUP3 = 'CITY' then @GROUP3VALUE
            else null
          end

        set @COUNTY =
          case 
            when @GROUP1 = 'COUNTY' then @GROUP1VALUE
            when @GROUP2 = 'COUNTY' then @GROUP2VALUE
            when @GROUP3 = 'COUNTY' then @GROUP3VALUE
            else null
          end

        set @POSTCODE =
          case 
            when @GROUP1 = 'POSTCODE' then @GROUP1VALUE
            when @GROUP2 = 'POSTCODE' then @GROUP2VALUE
            when @GROUP3 = 'POSTCODE' then @GROUP3VALUE
            else null
          end

        set @CLASSOF =
          case 
            when @GROUP1 = 'CLASSOF' then @GROUP1VALUE
            when @GROUP2 = 'CLASSOF' then @GROUP2VALUE
            when @GROUP3 = 'CLASSOF' then @GROUP3VALUE
            else null
          end

        set @DEGREE =
          case 
            when @GROUP1 = 'EDUCATIONDEGREE' then @GROUP1VALUE
            when @GROUP2 = 'EDUCATIONDEGREE' then @GROUP2VALUE
            when @GROUP3 = 'EDUCATIONDEGREE' then @GROUP3VALUE
            else null
          end

        set @FISCALYEAR =
          case 
            when @GROUP1 = 'FISCALYEAR' then @GROUP1VALUE
            when @GROUP2 = 'FISCALYEAR' then @GROUP2VALUE
            when @GROUP3 = 'FISCALYEAR' then @GROUP3VALUE
            else null
          end

        set @CALENDARYEAR =
          case 
            when @GROUP1 = 'CALENDARYEAR' then @GROUP1VALUE
            when @GROUP2 = 'CALENDARYEAR' then @GROUP2VALUE
            when @GROUP3 = 'CALENDARYEAR' then @GROUP3VALUE
            else null
          end

        set @CALENDARMONTHYEARNAME =
          case 
            when @GROUP1 = 'CALENDARMONTHYEARNAME' then @GROUP1VALUE
            when @GROUP2 = 'CALENDARMONTHYEARNAME' then @GROUP2VALUE
            when @GROUP3 = 'CALENDARMONTHYEARNAME' then @GROUP3VALUE
            else null
          end

        set @ETHNICITY =
          case 
            when @GROUP1 = 'ETHNICITY' then @GROUP1VALUE
            when @GROUP2 = 'ETHNICITY' then @GROUP2VALUE
            when @GROUP3 = 'ETHNICITY' then @GROUP3VALUE
            else null
          end

        if @DATALABEL = 'MEMBERSHIPS' and @CALENDARMONTHYEARNAME is not null
          begin
            set @STARTDATEDIMID = (select min(DATEDIMID) from bbdw.DIM_DATE where CALENDARMONTHYEARNAME = @CALENDARMONTHYEARNAME)
            set @ENDDATEDIMID = (select max(DATEDIMID) from bbdw.DIM_DATE where CALENDARMONTHYEARNAME = @CALENDARMONTHYEARNAME)
          end


        if @DATALABEL = 'MEMBERSHIPS'

          begin

            select distinct
              dcl.[CONSTITUENTLOOKUPID], 
              dcl.[FULLNAME],
              dcl.[PRIMARYADDRESS], 
              dcl.[PRIMARYADDRESSCITY], 
              case when dcl.[PRIMARYADDRESSSTATE] = 'No State' then '' else dcl.[PRIMARYADDRESSSTATE] end as [PRIMARYADDRESSSTATE],  
              dcl.[PRIMARYADDRESSPOSTCODE], 
              'http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID=' + CONVERT(nvarchar(36), dcl.[CONSTITUENTSYSTEMID]) as CONSTITUENTID,
              dmp.[MEMBERSHIPPROGRAM], 
              dm.[JOINDATE], 
              dm.[EXPIRATIONDATE], 
              'http://www.blackbaud.com/MEMBERSHIPID?MEMBERSHIPID=' + CONVERT(nvarchar(36), dm.[MEMBERSHIPSYSTEMID]) as MEMBERSHIPID,
              dcl.[KEYNAME], 
              dcl.[FIRSTNAME]

            from BBDW.[v_FACT_MEMBERSHIPTRANSACTION] fmt
            left join BBDW.[v_DIM_MEMBERSHIP] dm on dm.[MEMBERSHIPDIMID] = fmt.[MEMBERSHIPDIMID]
            left join BBDW.[v_DIM_MEMBERSHIPSTATUS] ms on ms.[MEMBERSHIPSTATUSDIMID] = fmt.[MEMBERSHIPSTATUSDIMID]
            left join BBDW.[v_DIM_MEMBERSHIPPROGRAM] dmp on dmp.[MEMBERSHIPPROGRAMDIMID] = dm.[MEMBERSHIPPROGRAMDIMID]
            inner join @MEMBERSHIPPROGRAMIDTABLE tmp on tmp.MEMBERSHIPPROGRAMSYSTEMID = dmp.[MEMBERSHIPPROGRAMSYSTEMID]
            left join BBDW.[v_DIM_MEMBERSHIPACTION] dma on dma.[MEMBERSHIPACTIONDIMID] = fmt.[MEMBERSHIPACTIONDIMID]
            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]
            left join BBDW.[v_DIM_EDUCATION] de on de.[CONSTITUENTDIMID] = fmp.[CONSTITUENTDIMID] and de.[ISPRIMARYRECORD] = 1 and de.[EDUCATIONINSTITUTIONISAFFLIATED] = 1
            left join BBDW.[v_DIM_DATE] dd on dd.[DATEDIMID] = fmt.[MEMBERSHIPTRANSACTIONDATEDIMID]
            left join BBDW.[v_FACT_CONSTITUENTETHNICITY] fe on fe.[CONSTITUENTDIMID] = fmp.CONSTITUENTDIMID
            left join BBDW.[v_DIM_ETHNICITY] e on fe.[ETHNICITYDIMID] = e.[ETHNICITYDIMID]
            where 
              ms.[MEMBERSHIPSTATUSCODE] in (0,99) and 
              fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] <= @ENDDATEDIMID and 
              fmt.[NEXTMEMBERSHIPTRANSACTIONDATEDIMID] >=  @STARTDATEDIMID and
              (dmp.[MEMBERSHIPPROGRAM] = @MEMBERSHIPPROGRAM or @MEMBERSHIPPROGRAM is null) and
              (dmp.[MEMBERSHIPLEVEL] = @MEMBERSHIPLEVEL or @MEMBERSHIPLEVEL is null) and
              (dmp.[MEMBERSHIPREPORTINGGROUP] = @MEMBERSHIPREPORTINGGROUP or @MEMBERSHIPREPORTINGGROUP is null) and
              (dcl.[PRIMARYADDRESSCOUNTRY] = @COUNTRY or @COUNTRY is null) and
              (dcl.[PRIMARYADDRESSSTATE] = @STATE or @STATE is null) and
              (dcl.[PRIMARYADDRESSCOUNTY] = @COUNTY or @COUNTY is null) and
              (dcl.[PRIMARYADDRESSCITY] = @CITY or @CITY is null) and
              (dcl.[PRIMARYADDRESSPOSTCODE] = @POSTCODE or @POSTCODE is null) and
              (isnull(de.[CLASSOF], 0) = @CLASSOF or @CLASSOF is null) and
              ((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 ) = @DEGREE or @DEGREE is null) and
              (isnull(e.[ETHNICITY], 'No Ethnicity') = @ETHNICITY or @ETHNICITY is null) and
              (dd.[CALENDARYEAR] = @CALENDARYEAR or @CALENDARYEAR is null) and
              (dd.[FISCALYEAR] = @FISCALYEAR or @FISCALYEAR is null)
            order by dcl.[KEYNAME], dcl.[FIRSTNAME]

          end

        else

          begin

            select 
              dcl.[CONSTITUENTLOOKUPID], 
              dcl.[FULLNAME],
              dcl.[PRIMARYADDRESS], 
              dcl.[PRIMARYADDRESSCITY], 
              case when dcl.[PRIMARYADDRESSSTATE] = 'No State' then '' else dcl.[PRIMARYADDRESSSTATE] end as [PRIMARYADDRESSSTATE], 
              dcl.[PRIMARYADDRESSPOSTCODE], 
              'http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID=' + CONVERT(nvarchar(36), dcl.[CONSTITUENTSYSTEMID]) as [CONSTITUENTID],
              dmp.[MEMBERSHIPPROGRAM], 
              dm.[JOINDATE], 
              dm.[EXPIRATIONDATE], 
              'http://www.blackbaud.com/MEMBERSHIPID?MEMBERSHIPID=' + CONVERT(nvarchar(36), dm.[MEMBERSHIPSYSTEMID]) as [MEMBERSHIPID],
              dcl.[KEYNAME], 
              dcl.[FIRSTNAME]

            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] = dm.[MEMBERSHIPPROGRAMDIMID]
            inner join @MEMBERSHIPPROGRAMIDTABLE tmp on tmp.MEMBERSHIPPROGRAMSYSTEMID = dmp.[MEMBERSHIPPROGRAMSYSTEMID]
            left join BBDW.[v_DIM_MEMBERSHIPACTION] dma on dma.[MEMBERSHIPACTIONDIMID] = fmt.[MEMBERSHIPACTIONDIMID]
            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]
            left join BBDW.[v_DIM_EDUCATION] de on de.[CONSTITUENTDIMID] = fmp.[CONSTITUENTDIMID] and de.[ISPRIMARYRECORD] = 1 and de.[EDUCATIONINSTITUTIONISAFFLIATED] = 1
            left join BBDW.[v_DIM_DATE] dd on dd.[DATEDIMID] = fmt.[MEMBERSHIPTRANSACTIONDATEDIMID]
            left join BBDW.[v_FACT_CONSTITUENTETHNICITY] fe on fe.[CONSTITUENTDIMID] = fmp.CONSTITUENTDIMID
            left join BBDW.[v_DIM_ETHNICITY] e on fe.[ETHNICITYDIMID] = e.[ETHNICITYDIMID]
            where 
              fmt.[MEMBERSHIPTRANSACTIONDATEDIMID] between @STARTDATEDIMID and @ENDDATEDIMID and
              dma.[MEMBERSHIPACTION] = @DATALABEL and
              (dmp.[MEMBERSHIPPROGRAM] = @MEMBERSHIPPROGRAM or @MEMBERSHIPPROGRAM is null) and
              (dmp.[MEMBERSHIPLEVEL] = @MEMBERSHIPLEVEL or @MEMBERSHIPLEVEL is null) and
              (dmp.[MEMBERSHIPREPORTINGGROUP] = @MEMBERSHIPREPORTINGGROUP or @MEMBERSHIPREPORTINGGROUP is null) and
              (dcl.[PRIMARYADDRESSCOUNTRY] = @COUNTRY or @COUNTRY is null) and
              (dcl.[PRIMARYADDRESSSTATE] = @STATE or @STATE is null) and
              (dcl.[PRIMARYADDRESSCOUNTY] = @COUNTY or @COUNTY is null) and
              (dcl.[PRIMARYADDRESSCITY] = @CITY or @CITY is null) and
              (dcl.[PRIMARYADDRESSPOSTCODE] = @POSTCODE or @POSTCODE is null) and
              (isnull(de.[CLASSOF], 0) = @CLASSOF or @CLASSOF is null) and
              ((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 ) = @DEGREE or @DEGREE is null) and
              (isnull(e.[ETHNICITY], 'No Ethnicity') = @ETHNICITY or @ETHNICITY is null) and
              (dd.[CALENDARYEAR] = @CALENDARYEAR or @CALENDARYEAR is null) and
              (dd.[FISCALYEAR] = @FISCALYEAR or @FISCALYEAR is null) and
              (dd.[CALENDARMONTHYEARNAME] = @CALENDARMONTHYEARNAME or @CALENDARMONTHYEARNAME is null)
              order by dcl.[KEYNAME], dcl.[FIRSTNAME]

          end