UFN_ADDRESSPROCESS_GETCONSTITUENTS_BYCONSTITUENT_BULK
Returns constituents and household information for address processing for all constituents.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DATE | datetime | IN | |
@INCLUDEHOUSEHOLDPROCESSING | bit | IN |
Definition
Copy
create function dbo.UFN_ADDRESSPROCESS_GETCONSTITUENTS_BYCONSTITUENT_BULK(
@DATE datetime,
@INCLUDEHOUSEHOLDPROCESSING bit
)
returns table
as
return(
with HOUSEHOLD_CTE as (
select
CONSTITUENT.ID [CONSTITUENTID],
GROUPDATA.ID [HOUSEHOLDID]
from dbo.CONSTITUENT
inner join dbo.GROUPMEMBER on GROUPMEMBER.MEMBERID = CONSTITUENT.ID
inner join dbo.GROUPDATA on GROUPDATA.ID = GROUPMEMBER.GROUPID
inner join dbo.GROUPMEMBERDATERANGE on GROUPMEMBERDATERANGE.GROUPMEMBERID = GROUPMEMBER.ID
where GROUPDATA.GROUPTYPECODE = 0
and (
(GROUPMEMBERDATERANGE.DATEFROM is null and (GROUPMEMBERDATERANGE.DATETO is null or GROUPMEMBERDATERANGE.DATETO > dbo.UFN_DATE_GETEARLIESTTIME(@DATE)))
or (GROUPMEMBERDATERANGE.DATETO is null and (GROUPMEMBERDATERANGE.DATEFROM is null or GROUPMEMBERDATERANGE.DATEFROM <= dbo.UFN_DATE_GETEARLIESTTIME(@DATE)))
or (GROUPMEMBERDATERANGE.DATEFROM <= dbo.UFN_DATE_GETEARLIESTTIME(@DATE) and GROUPMEMBERDATERANGE.DATETO > dbo.UFN_DATE_GETEARLIESTTIME(@DATE))
)
)
select
C.ID [ID],
C.ID [CONSTITUENTID],
case
when GROUPDATA.GROUPTYPECODE = 0
then C.ID
else HOUSEHOLD_CTE.HOUSEHOLDID
end [HOUSEHOLDID],
0 [RETURNEDASHOUSEHOLDMEMBER],
C.ISORGANIZATION,
C.ISGROUP
from dbo.CONSTITUENT C
left outer join HOUSEHOLD_CTE on HOUSEHOLD_CTE.CONSTITUENTID = C.ID
left outer join dbo.GROUPDATA on GROUPDATA.ID = C.ID
union
select
CONSTITUENT.ID,
CONSTITUENT.ID,
CONSTITUENT.ID,
1,
0,
1
from dbo.CONSTITUENT
inner join dbo.GROUPDATA on CONSTITUENT.ID = GROUPDATA.ID
where GROUPDATA.GROUPTYPECODE = 0
and @INCLUDEHOUSEHOLDPROCESSING = 1
union
select
GD.ID,
GM.MEMBERID,
GD.ID,
1,
0, -- org
1 -- group
from dbo.GROUPMEMBER GM
left outer join dbo.GROUPMEMBERDATERANGE on GROUPMEMBERDATERANGE.GROUPMEMBERID = GM.ID
left outer join dbo.GROUPDATA GD on GD.ID = GM.GROUPID
where @INCLUDEHOUSEHOLDPROCESSING = 1
and GD.GROUPTYPECODE = 0
and (
(GROUPMEMBERDATERANGE.DATEFROM is null and (GROUPMEMBERDATERANGE.DATETO is null or GROUPMEMBERDATERANGE.DATETO > dbo.UFN_DATE_GETEARLIESTTIME(@DATE)))
or (GROUPMEMBERDATERANGE.DATETO is null and (GROUPMEMBERDATERANGE.DATEFROM is null or GROUPMEMBERDATERANGE.DATEFROM <= dbo.UFN_DATE_GETEARLIESTTIME(@DATE)))
or (GROUPMEMBERDATERANGE.DATEFROM <= dbo.UFN_DATE_GETEARLIESTTIME(@DATE) and GROUPMEMBERDATERANGE.DATETO > dbo.UFN_DATE_GETEARLIESTTIME(@DATE))
)
)