UFN_MEMBERSHIP_MEMBER_WITHALIASANDNICKNAME

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@MEMBERSHIPID uniqueidentifier IN

Definition

Copy


            create function dbo.UFN_MEMBERSHIP_MEMBER_WITHALIASANDNICKNAME(
                @MEMBERSHIPID uniqueidentifier
            )
            returns @MEMBERNAMES table (
                [MEMBERID] uniqueidentifier,
                [CONSTITUENTID] uniqueidentifier,
                [ISPRIMARY] bit,
                [ISDROPPED] bit,
                [ISCAREGIVER] bit,
                [FIRSTNAME] nvarchar(50), --Or nickname, alias

                [KEYNAME] nvarchar(100),
                [HASDUPLICATEACTIVEMEMBERSHIP] bit
            )
            as begin
                declare @MEMBERS table (
                    [MEMBERID] uniqueidentifier,
                    [ISPRIMARY] bit,
                    [ISDROPPED] bit,
                    [ISCAREGIVER] bit,
                    [CONSTITUENTID] uniqueidentifier,
                    [FIRSTNAME] nvarchar(50),
                    [KEYNAME] nvarchar(100),
                    [NICKNAME] nvarchar(50),
                    [HASDUPLICATEACTIVEMEMBERSHIP] bit
                );

                insert into @MEMBERS
                select
                    [MEMBER].[ID] as [MEMBERID],
                    [MEMBER].[ISPRIMARY],
                    [MEMBER].[ISDROPPED],
                    [MEMBER].[ISCAREGIVER],
                    [MEMBER].[CONSTITUENTID],
                    [CONSTITUENT].[FIRSTNAME],
                    [CONSTITUENT].[KEYNAME],
                    [CONSTITUENT].[NICKNAME],
                    [HASANOTHERACTIVEMEMBERSHIPFORPROGRAM].[VALUE] as [HASDUPLICATEACTIVEMEMBERSHIP]
                from dbo.[MEMBER] with (nolock)
                inner join dbo.[CONSTITUENT] with (nolock)
                    on [MEMBER].[CONSTITUENTID] = [CONSTITUENT].[ID]
                inner join dbo.[MEMBERSHIP]
                    on [MEMBER].[MEMBERSHIPID] = [MEMBERSHIP].[ID]
                cross apply (
                    select 
                        case 
                            when exists(
                                select 1 
                                from dbo.[MEMBER] as [MEM] 
                                inner join dbo.[MEMBERSHIP] as [MEMSHIP]
                                    on [MEM].[MEMBERSHIPID] = [MEMSHIP].[ID]
                                where 
                                    [MEM].[CONSTITUENTID] = [MEMBER].[CONSTITUENTID] and
                                    [MEM].[MEMBERSHIPID] <> [MEMBER].[MEMBERSHIPID] and
                                    [MEM].[ISDROPPED] = 0 and
                                    [MEMSHIP].[MEMBERSHIPPROGRAMID] = [MEMBERSHIP].[MEMBERSHIPPROGRAMID]
                            ) 
                                then 1
                            else 0
                        end as [VALUE]
                ) as [HASANOTHERACTIVEMEMBERSHIPFORPROGRAM]
                where [MEMBERSHIP].[ID] = @MEMBERSHIPID;

                insert into @MEMBERNAMES
                select 
                    [MEMBER].[MEMBERID],
                    [MEMBER].[CONSTITUENTID],
                    [MEMBER].[ISPRIMARY],
                    [MEMBER].[ISDROPPED],
                    [MEMBER].[ISCAREGIVER],
                    [MEMBER].[FIRSTNAME],
                    [MEMBER].[KEYNAME],
                    [MEMBER].[HASDUPLICATEACTIVEMEMBERSHIP]
                from @MEMBERS [MEMBER]

                union all
                select 
                    [MEMBER].[MEMBERID],
                    [MEMBER].[CONSTITUENTID],
                    [MEMBER].[ISPRIMARY],
                    [MEMBER].[ISDROPPED],
                    [MEMBER].[ISCAREGIVER],
                    [MEMBER].[NICKNAME],
                    [MEMBER].[KEYNAME],
                    [MEMBER].[HASDUPLICATEACTIVEMEMBERSHIP]
                from @MEMBERS [MEMBER]
                where [MEMBER].[NICKNAME] <> ''

                union all
                select 
                    [MEMBER].[MEMBERID],
                    [MEMBER].[CONSTITUENTID],
                    [MEMBER].[ISPRIMARY],
                    [MEMBER].[ISDROPPED],
                    [MEMBER].[ISCAREGIVER],
                    [ALIAS].[FIRSTNAME],
                    [ALIAS].[KEYNAME],
                    [MEMBER].[HASDUPLICATEACTIVEMEMBERSHIP]
                from @MEMBERS [MEMBER]
                inner join dbo.[ALIAS] with (nolock)
                    on [MEMBER].[CONSTITUENTID] = [ALIAS].[CONSTITUENTID]
                order by [ISDROPPED] asc

                return;
            end