V_QUERY_CONSTITUENTMARKETING

This query is used as a record source for the marketing component.

Fields

Field Field Type Null Description
CONSTITUENTID uniqueidentifier System record ID
NAME nvarchar(154) yes Name
KEYNAME nvarchar(100) Last name/Organization name
KEYNAMEPREFIX nvarchar(50) Key name prefix
FIRSTNAME nvarchar(50) First name
MIDDLENAME nvarchar(50) Middle name
TITLECODEID_TRANSLATION nvarchar(100) yes Title
SUFFIXCODEID_TRANSLATION nvarchar(100) yes Suffix
TITLE2CODEID_TRANSLATION nvarchar(100) yes Title 2
SUFFIX2CODEID_TRANSLATION nvarchar(100) yes Suffix 2
GENDERCODEID_TRANSLATION nvarchar(100) yes
AGE int yes Age
GENDER nvarchar(7) yes Gender
FIRSTGIFTDATE datetimeoffset yes First gift date
ADDRESSID uniqueidentifier yes Address ID
COUNTRYID_TRANSLATION nvarchar(100) yes Country
COUNTRYID_ABBREVIATION nvarchar(5) yes Country abbreviation
ADDRESSBLOCK nvarchar(150) yes Address
ADDRESSLINE1 nvarchar(150) yes Address line 1
ADDRESSLINE2 nvarchar(150) yes Address line 2
ADDRESSLINE3 nvarchar(150) yes Address line 3
ADDRESSLINE4 nvarchar(150) yes Address line 4
ADDRESSLINE5 nvarchar(150) yes Address line 5
CITY nvarchar(50) yes City
STATEID_TRANSLATION nvarchar(100) yes State
STATEID_ABBREVIATION nvarchar(50) yes State abbreviation
POSTCODE nvarchar(12) yes ZIP
CART nvarchar(10) yes CART
DPC nvarchar(8) yes DPC
LOT nvarchar(5) yes LOT
ADDRESSEE nvarchar(700) yes Addressee
SALUTATION nvarchar(700) yes Salutation
CONTACT nvarchar(700) yes Contact addressee
POSITION nvarchar(100) yes Position
CONTACTID uniqueidentifier yes Contact ID
MAILTOCONSTITUENTID uniqueidentifier yes Mail to constituent ID
EMAILADDRESS UDT_EMAILADDRESS yes Email address
PHONENUMBER nvarchar(100) yes Phone number
ISHOUSEHOLD bit Is household
HEADOFHOUSEHOLD bit Head of household
HOUSEHOLDID uniqueidentifier yes Household ID
ADDEDBY_APPLICATION nvarchar(200) yes Added by application
ADDEDBY_USERNAME nvarchar(128) yes Added by user name
CHANGEDBY_APPLICATION nvarchar(200) yes Changed by application
CHANGEDBY_USERNAME nvarchar(128) yes Changed by user name
DATEADDED datetime Date added
DATECHANGED datetime Date changed
TSLONG bigint yes Timestamp value
LOOKUPID nvarchar(100) yes Lookup ID
ORGANIZATIONNAME nvarchar(100)
CONTACTORADDRESSEE nvarchar(700) yes
TITLECODEID uniqueidentifier yes
SUFFIXCODEID uniqueidentifier yes
TITLE2CODEID uniqueidentifier yes
SUFFIX2CODEID uniqueidentifier yes
GENDERCODEID uniqueidentifier yes
COUNTRYID uniqueidentifier yes
STATEID uniqueidentifier yes

Definition

Copy
/*
Generated by Blackbaud AppFx Platform
Date:  5/3/2024 2:18:26 PM
Assembly Version:  Blackbaud.AppFx.Platform.SqlClr, Version=4.0.3700.0, Culture=neutral, PublicKeyToken=null
Copyright Blackbaud
*/
CREATE VIEW dbo.V_QUERY_CONSTITUENTMARKETING AS



select
  [CONSTITUENT].[ID] as [CONSTITUENTID],

  [CONSTITUENT].[NAME],
  [CONSTITUENT].[KEYNAME],
  [CONSTITUENT].[KEYNAMEPREFIX],
  [CONSTITUENT].[FIRSTNAME],
  [CONSTITUENT].[MIDDLENAME],

  [TITLECODE1].[DESCRIPTION] as [TITLECODEID_TRANSLATION],
  [SUFFIXCODE1].[DESCRIPTION] as [SUFFIXCODEID_TRANSLATION],
  [TITLECODE2].[DESCRIPTION] as [TITLE2CODEID_TRANSLATION],
  [SUFFIXCODE2].[DESCRIPTION] as [SUFFIX2CODEID_TRANSLATION],
  [GENDERCODE].[DESCRIPTION] as [GENDERCODEID_TRANSLATION],
  (case when exists (select top 1 1 from dbo.[DECEASEDCONSTITUENT] where [ID] = [CONSTITUENT].[ID]) then null else [CONSTITUENT].[AGE] end) as [AGE],
  [CONSTITUENT].[GENDER],
  (select min([DATE]) from dbo.[FINANCIALTRANSACTION] where [CONSTITUENTID] = [CONSTITUENT].[ID] and [TYPECODE] in (0,1,2,3,4,5,6,7,8,9) and [DELETEDON] is null) as [FIRSTGIFTDATE],

  [ADDRESS].[ID] as [ADDRESSID],
  [COUNTRY].[DESCRIPTION] as [COUNTRYID_TRANSLATION],
  [COUNTRY].[ABBREVIATION] as [COUNTRYID_ABBREVIATION],
  [ADDRESS].[ADDRESSBLOCK],
  [ADDRLINES].[ADDRESSLINE1],
  [ADDRLINES].[ADDRESSLINE2],
  [ADDRLINES].[ADDRESSLINE3],
  [ADDRLINES].[ADDRESSLINE4],
  [ADDRLINES].[ADDRESSLINE5],
  [ADDRESS].[CITY],
  [STATE].[DESCRIPTION] as [STATEID_TRANSLATION],
  [STATE].[ABBREVIATION] as [STATEID_ABBREVIATION],
  [ADDRESS].[POSTCODE],
  [ADDRESS].[CART],
  [ADDRESS].[DPC],
  [ADDRESS].[LOT],

  (select
    (case when [NAMEFORMATFUNCTIONID] is null
       then
         [CUSTOMNAME]
       else
         (case when [NAMEFORMATFUNCTIONID] = (select [ID] from dbo.[NAMEFORMATFUNCTION] where [FORMATSQLFUNCTION] = 'UFN_NAMEFORMATFUNCTION_SIMPLE')
            then
              dbo.[UFN_NAMEFORMATFUNCTION_SIMPLE]([CONSTITUENT].[ID], [CONSTITUENT].[KEYNAME], [CONSTITUENT].[FIRSTNAME], [CONSTITUENT].[MIDDLENAME], [TITLECODE1].[DESCRIPTION], [SUFFIXCODE1].[DESCRIPTION], '', '', '', '', '')
            else
              dbo.[UFN_NAMEFORMAT_FROMID]([NAMEFORMATFUNCTIONID], [CONSTITUENTID]) 
          end)
     end)
   from dbo.[NAMEFORMAT]
   where [CONSTITUENTID] = [CONSTITUENT].[ID]
   and [PRIMARYADDRESSEE] = 1) as [ADDRESSEE],

  (select
    (case when [NAMEFORMATFUNCTIONID] is null
       then
         [CUSTOMNAME]
       else
         (case when [NAMEFORMATFUNCTIONID] = (select [ID] from dbo.[NAMEFORMATFUNCTION] where [FORMATSQLFUNCTION] = 'UFN_NAMEFORMATFUNCTION_SIMPLE')
            then
              dbo.[UFN_NAMEFORMATFUNCTION_SIMPLE]([CONSTITUENT].[ID], [CONSTITUENT].[KEYNAME], [CONSTITUENT].[FIRSTNAME], [CONSTITUENT].[MIDDLENAME], [TITLECODE1].[DESCRIPTION], [SUFFIXCODE1].[DESCRIPTION], '', '', '', '', '')
            else
              dbo.[UFN_NAMEFORMAT_FROMID]([NAMEFORMATFUNCTIONID], [CONSTITUENTID]) 
          end)
     end)
   from dbo.[NAMEFORMAT]
   where [CONSTITUENTID] = [CONSTITUENT].[ID]
   and [PRIMARYSALUTATION] = 1) as [SALUTATION],

  cast('' as nvarchar(700)) as [CONTACT],
  cast('' as nvarchar(100)) as [POSITION],
  cast(null as uniqueidentifier) as [CONTACTID],
  cast(null as uniqueidentifier) as [MAILTOCONSTITUENTID],

  [EMAILADDRESS].[EMAILADDRESS],
  [PHONE].[NUMBER] as [PHONENUMBER],

  isnull([CONSTITUENTHOUSEHOLD].[ISHOUSEHOLD], 0) as [ISHOUSEHOLD],
  isnull([CONSTITUENTHOUSEHOLD].[ISPRIMARYMEMBER], 0) as [HEADOFHOUSEHOLD],
  [CONSTITUENTHOUSEHOLD].[HOUSEHOLDID],

  [ADDEDBY].[APPLICATIONNAME] as [ADDEDBY_APPLICATION],
  [ADDEDBY].[USERNAME] as [ADDEDBY_USERNAME],
  [CHANGEDBY].[APPLICATIONNAME] as [CHANGEDBY_APPLICATION],
  [CHANGEDBY].[USERNAME] as [CHANGEDBY_USERNAME],
  [CONSTITUENT].[DATEADDED],
  [CONSTITUENT].[DATECHANGED],
  [CONSTITUENT].[TSLONG],
  [CONSTITUENT].[LOOKUPID],
  case [CONSTITUENT].[ISORGANIZATION] when 1 then [CONSTITUENT].[KEYNAME] else '' end [ORGANIZATIONNAME],

  cast('' as nvarchar(700)) as [CONTACTORADDRESSEE],
  [CONSTITUENT].[TITLECODEID],
  [CONSTITUENT].[SUFFIXCODEID],
  [CONSTITUENT].[TITLE2CODEID],
  [CONSTITUENT].[SUFFIX2CODEID],
  [CONSTITUENT].[GENDERCODEID],
  [ADDRESS].[COUNTRYID],
  [ADDRESS].[STATEID]

  /*#EXTENSION*/

from dbo.[CONSTITUENT]
left outer join dbo.[TITLECODE] as [TITLECODE1] on [TITLECODE1].[ID] = [CONSTITUENT].[TITLECODEID]
left outer join dbo.[SUFFIXCODE] as [SUFFIXCODE1] on [SUFFIXCODE1].[ID] = [CONSTITUENT].[SUFFIXCODEID]
left outer join dbo.[GENDERCODE] as [GENDERCODE] on [GENDERCODE].[ID] = [CONSTITUENT].[GENDERCODEID]
left outer join dbo.[TITLECODE] as [TITLECODE2] on [TITLECODE2].[ID] = [CONSTITUENT].[TITLE2CODEID]
left outer join dbo.[SUFFIXCODE] as [SUFFIXCODE2] on [SUFFIXCODE2].[ID] = [CONSTITUENT].[SUFFIX2CODEID]
/*###BEGIN_JOIN_ADDRESS###*/
left outer join dbo.[ADDRESS] on ([ADDRESS].[CONSTITUENTID] = [CONSTITUENT].[ID] and [ADDRESS].[ISPRIMARY] = 1)
/*###END_JOIN_ADDRESS###*/

--Since we are using a SQL CLR function, the optimizer cannot figure that out the table function only returns one row, and so the optimizer

--will include this "outer apply" in even the simplest execution plans and hurt performance.  To remedy the situation, we are using a "top 1"

--clause to help out the optimizer so that it doesn't execute the function unless you return one of the address line fields.

outer apply (select top 1 [ADDRESSLINE1], [ADDRESSLINE2], [ADDRESSLINE3], [ADDRESSLINE4], [ADDRESSLINE5] from dbo.[UFN_ADDRESS_GETADDRESSLINES]([ADDRESS].[ADDRESSBLOCK])) as [ADDRLINES]

left outer join dbo.[COUNTRY] on [COUNTRY].[ID] = [ADDRESS].[COUNTRYID]
left outer join dbo.[STATE] on [STATE].[ID] = [ADDRESS].[STATEID]
/*###BEGIN_JOIN_EMAIL###*/
left outer join dbo.[EMAILADDRESS] on ([EMAILADDRESS].[CONSTITUENTID] = [CONSTITUENT].[ID] and [EMAILADDRESS].[ISPRIMARY] = 1)
/*###END_JOIN_EMAIL###*/
left outer join dbo.[PHONE] on ([PHONE].[CONSTITUENTID] = [CONSTITUENT].[ID] and [PHONE].[ISPRIMARY] = 1)
left outer join dbo.[CONSTITUENTHOUSEHOLD] on [CONSTITUENTHOUSEHOLD].[ID] = [CONSTITUENT].[ID]
left outer join dbo.[CHANGEAGENT] as [ADDEDBY] on [ADDEDBY].[ID] = [CONSTITUENT].[ADDEDBYID]
left outer join dbo.[CHANGEAGENT] as [CHANGEDBY] on [CHANGEDBY].[ID] = [CONSTITUENT].[CHANGEDBYID]
where [CONSTITUENT].[ISCONSTITUENT] = 1