USP_FAFGROUP_CALCULATE_GROUPRETENTIONRATE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@NUMBERPROCESSED | int | INOUT | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_FAFGROUP_CALCULATE_GROUPRETENTIONRATE
(
@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 group returned and retention rate,
begin try
merge into dbo.FAFGROUPSUMMARYINFORMATION as Target
using
(
select A.GROUPID, A.EVENTID, A.CONSTITUENTID, A.TYPECODE , A.TOTALGROUPSRETAINED, A.GROUPRETENTIONRATE
from dbo.UFN_FAFGROUP_GETGROUPRETENTIONRATE() A
) as source on Target.ID = source.GROUPID and Target.EVENTID = source.EventID
when matched and (source.TOTALGROUPSRETAINED <> Target.TOTALGROUPSRETAINED or source.GROUPRETENTIONRATE <> Target.GROUPRETENTIONRATE) then
update set
TOTALGROUPSRETAINED = source.TOTALGROUPSRETAINED,
GROUPRETENTIONRATE = source.GROUPRETENTIONRATE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
when not matched then
insert(ID, GROUPTYPECODE, EVENTID, GROUPCONSTITUENTID, TOTALGROUPSRETAINED, GROUPRETENTIONRATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(source.GROUPID, source.TYPECODE, source.EventID, source.CONSTITUENTID, source.TOTALGROUPSRETAINED, source.GROUPRETENTIONRATE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end try
begin catch
exec dbo.USP_RAISE_ERROR;
end catch
end