USP_MERGETASK_DEMOGRAPHIC
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SOURCEID | uniqueidentifier | IN | |
@TARGETID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_MERGETASK_DEMOGRAPHIC
(
@SOURCEID uniqueidentifier,
@TARGETID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier
)
as
set nocount on;
declare @SOURCEETHNICITYCODEID uniqueidentifier = null;
declare @SOURCERELIGIONCODEID uniqueidentifier = null;
declare @SOURCETARGETCODEID uniqueidentifier = null;
declare @SOURCEINCOMECODEID uniqueidentifier = null;
declare @SOURCEBIRTHPLACE nvarchar(50) = '';
declare @SOURCEDENOMINATIONCODEID uniqueidentifier = null;
declare @SOURCECHURCHAFFILIATIONCODEID uniqueidentifier = null;
declare @SOURCEISHISPANICLATINO bit = 0;
declare @DATECHANGED datetime = getdate();
--Cache the Source record's field values
select
@SOURCEETHNICITYCODEID = ETHNICITYCODEID,
@SOURCERELIGIONCODEID = RELIGIONCODEID,
@SOURCETARGETCODEID = TARGETCODEID,
@SOURCEINCOMECODEID = INCOMECODEID,
@SOURCEBIRTHPLACE = BIRTHPLACE,
@SOURCEDENOMINATIONCODEID = DENOMINATIONCODEID,
@SOURCECHURCHAFFILIATIONCODEID = CHURCHAFFILIATIONCODEID,
@SOURCEISHISPANICLATINO = ISHISPANICLATINO
from dbo.DEMOGRAPHIC
where ID = @SOURCEID
-- write sql to handle merging the data for the given source and target IDs
if exists(select ID from DEMOGRAPHIC where id = @TARGETID)
begin
update dbo.DEMOGRAPHIC
set
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @DATECHANGED,
ETHNICITYCODEID = case when (ETHNICITYCODEID is null) then @SOURCEETHNICITYCODEID else ETHNICITYCODEID end,
RELIGIONCODEID = case when (RELIGIONCODEID is null) then @SOURCERELIGIONCODEID else RELIGIONCODEID end,
TARGETCODEID = case when (TARGETCODEID is null) then @SOURCETARGETCODEID else TARGETCODEID end,
INCOMECODEID = case when (INCOMECODEID is null) then @SOURCEINCOMECODEID else INCOMECODEID end,
BIRTHPLACE = case when (BIRTHPLACE = '') then @SOURCEBIRTHPLACE else BIRTHPLACE end,
DENOMINATIONCODEID = case when (DENOMINATIONCODEID is null) then @SOURCEDENOMINATIONCODEID else DENOMINATIONCODEID end,
CHURCHAFFILIATIONCODEID = case when (CHURCHAFFILIATIONCODEID is null) then @SOURCECHURCHAFFILIATIONCODEID else CHURCHAFFILIATIONCODEID end
where
ID = @TARGETID
end
else
begin
insert into dbo.DEMOGRAPHIC (ID, ADDEDBYID, DATEADDED, CHANGEDBYID, DATECHANGED,
ETHNICITYCODEID, RELIGIONCODEID, TARGETCODEID, INCOMECODEID, BIRTHPLACE, DENOMINATIONCODEID, CHURCHAFFILIATIONCODEID, ISHISPANICLATINO)
values (@TARGETID, @CHANGEAGENTID, @DATECHANGED, @CHANGEAGENTID, @DATECHANGED,
@SOURCEETHNICITYCODEID, @SOURCERELIGIONCODEID, @SOURCETARGETCODEID, @SOURCEINCOMECODEID, @SOURCEBIRTHPLACE, @SOURCEDENOMINATIONCODEID, @SOURCECHURCHAFFILIATIONCODEID, @SOURCEISHISPANICLATINO)
end
-- copy over any Ethnicities not already set on Target
insert into dbo.DEMOGRAPHICETHNICITY
(DEMOGRAPHICID, ETHNICITYCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
@TARGETID, ETHNICITYCODEID, @CHANGEAGENTID, @CHANGEAGENTID, @DATECHANGED, @DATECHANGED
from
dbo.DEMOGRAPHICETHNICITY
where
DEMOGRAPHICETHNICITY.DEMOGRAPHICID = @SOURCEID
and DEMOGRAPHICETHNICITY.ETHNICITYCODEID not in (select ETHNICITYCODEID from dbo.DEMOGRAPHICETHNICITY where DEMOGRAPHICID = @TARGETID)
return 0;