USP_FAFGROUP_CALCULATE_PARTICIPANTRETENTIONRATE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@NUMBERPROCESSED | int | INOUT | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN |
Definition
Copy
create procedure dbo.USP_FAFGROUP_CALCULATE_PARTICIPANTRETENTIONRATE
(
@NUMBERPROCESSED integer = 0 output,
@CHANGEAGENTID uniqueidentifier = null,
@CURRENTDATE datetime = null
)
as
begin
set nocount on;
--declare @CURRENTDATE datetime;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
if @CURRENTDATE is null
set @CURRENTDATE = GETDATE();
-- get total number of participant returned to a group and its retention rate,
begin try
merge into dbo.FAFGROUPSUMMARYINFORMATION as Target
using
(
select A.GROUPID, A.EVENTID, A.CONSTITUENTID, A.TYPECODE , A.TOTALPARTICIPANTSRETAINED, A.PARTICIPANTRETENTIONRATE
from dbo.UFN_FAFGROUP_GETPARTICIPANTRETENTIONRATE() A
) as source on Target.ID = source.GROUPID and Target.EVENTID = source.EventID
when matched and (source.TOTALPARTICIPANTSRETAINED <> Target.TOTALPARTICIPANTSRETAINED or source.PARTICIPANTRETENTIONRATE <> Target.PARTICIPANTRETENTIONRATE) then
update set
TOTALPARTICIPANTSRETAINED = source.TOTALPARTICIPANTSRETAINED,
PARTICIPANTRETENTIONRATE = source.PARTICIPANTRETENTIONRATE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
when not matched then
insert(ID, GROUPTYPECODE, EVENTID, GROUPCONSTITUENTID, TOTALPARTICIPANTSRETAINED, PARTICIPANTRETENTIONRATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(source.GROUPID, source.TYPECODE, source.EventID, source.CONSTITUENTID, source.TOTALPARTICIPANTSRETAINED, source.PARTICIPANTRETENTIONRATE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end try
begin catch
exec dbo.USP_RAISE_ERROR;
end catch
end