USP_FAFGROUP_CALCULATE_CATEGORIZEDCOUNTANDAMOUNT
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@NUMBERPROCESSED | int | INOUT | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_FAFGROUP_CALCULATE_CATEGORIZEDCOUNTANDAMOUNT
(
@NUMBERPROCESSED integer = 0 output,
@CHANGEAGENTID uniqueidentifier = null,
@CURRENTDATE datetime = null
)
as
begin
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
if @CURRENTDATE is null
set @CURRENTDATE = GETDATE();
begin try
merge into dbo.FAFGROUPSUMMARYINFORMATION_CATEGORIZED as Target
using
(
select
T.GROUPID,
T.EVENTID,
T.GIFTCOUNT_PARTICIPANTS,
T.GIFTCOUNT_ONLINE,
T.GIFTCOUNT_OFFLINE,
T.GIFTCOUNT_FROMEMAIL,
T.GIFTCOUNT_FROMSOCIALMEDIA,
T.GIFTCOUNT_SELF,
T.AMOUNT_PARTICIPANTS,
T.AMOUNT_ONLINE,
T.AMOUNT_OFFLINE,
T.AMOUNT_FROMEMAIL,
T.AMOUNT_FROMSOCIALMEDIA,
T.AMOUNT_SELF,
T.AMOUNT_PENDING
from dbo.UFN_FAFGROUP_GETCATEGORIZEDCOUNTANDAMOUNT() T
) as source on Target.ID = source.GROUPID and Target.EVENTID = source.EventID
when matched and (
target.GIFTCOUNT_PARTICIPANTS <> source.GIFTCOUNT_PARTICIPANTS or
target.GIFTCOUNT_ONLINE <> source.GIFTCOUNT_ONLINE or
target.GIFTCOUNT_OFFLINE <> source.GIFTCOUNT_OFFLINE or
target.GIFTCOUNT_FROMEMAIL <> source.GIFTCOUNT_FROMEMAIL or
target.GIFTCOUNT_FROMSOCIALMEDIA <> source.GIFTCOUNT_FROMSOCIALMEDIA or
target.GIFTCOUNT_SELF <> source.GIFTCOUNT_SELF or
target.AMOUNT_PARTICIPANTS <> source.AMOUNT_PARTICIPANTS or
target.AMOUNT_ONLINE <> source.AMOUNT_ONLINE or
target.AMOUNT_OFFLINE <> source.AMOUNT_OFFLINE or
target.AMOUNT_FROMEMAIL <> source.AMOUNT_FROMEMAIL or
target.AMOUNT_FROMSOCIALMEDIA <> source.AMOUNT_FROMSOCIALMEDIA or
target.AMOUNT_SELF <> source.AMOUNT_SELF or
target.AMOUNT_PENDING <> source.AMOUNT_PENDING
) then
update set
GIFTCOUNT_PARTICIPANTS = isnull(source.GIFTCOUNT_PARTICIPANTS, target.GIFTCOUNT_PARTICIPANTS),
GIFTCOUNT_ONLINE = isnull(source.GIFTCOUNT_ONLINE, target.GIFTCOUNT_ONLINE),
GIFTCOUNT_OFFLINE = isnull(source.GIFTCOUNT_OFFLINE, target.GIFTCOUNT_OFFLINE),
GIFTCOUNT_FROMEMAIL = isnull(source.GIFTCOUNT_FROMEMAIL, target.GIFTCOUNT_FROMEMAIL),
GIFTCOUNT_FROMSOCIALMEDIA = isnull(source.GIFTCOUNT_FROMSOCIALMEDIA, target.GIFTCOUNT_FROMSOCIALMEDIA),
GIFTCOUNT_SELF = isnull(source.GIFTCOUNT_SELF, target.GIFTCOUNT_SELF),
AMOUNT_PARTICIPANTS = isnull(source.AMOUNT_PARTICIPANTS, target.AMOUNT_PARTICIPANTS),
AMOUNT_ONLINE = isnull(source.AMOUNT_ONLINE, target.AMOUNT_ONLINE),
AMOUNT_OFFLINE = isnull(source.AMOUNT_OFFLINE, target.AMOUNT_OFFLINE),
AMOUNT_FROMEMAIL = isnull(source.AMOUNT_FROMEMAIL, target.AMOUNT_FROMEMAIL),
AMOUNT_FROMSOCIALMEDIA = isnull(source.AMOUNT_FROMSOCIALMEDIA, target.AMOUNT_FROMSOCIALMEDIA),
AMOUNT_SELF = isnull(source.AMOUNT_SELF, target.AMOUNT_SELF),
AMOUNT_PENDING = isnull(source.AMOUNT_PENDING, target.AMOUNT_PENDING),
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
when not matched then
insert(
ID,
EVENTID,
GIFTCOUNT_PARTICIPANTS,
GIFTCOUNT_ONLINE,
GIFTCOUNT_OFFLINE,
GIFTCOUNT_FROMEMAIL,
GIFTCOUNT_FROMSOCIALMEDIA,
GIFTCOUNT_SELF,
AMOUNT_PARTICIPANTS,
AMOUNT_ONLINE,
AMOUNT_OFFLINE,
AMOUNT_FROMEMAIL,
AMOUNT_FROMSOCIALMEDIA,
AMOUNT_SELF,
AMOUNT_PENDING,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values(
source.GROUPID,
source.EVENTID,
source.GIFTCOUNT_PARTICIPANTS,
source.GIFTCOUNT_ONLINE,
source.GIFTCOUNT_OFFLINE,
source.GIFTCOUNT_FROMEMAIL,
source.GIFTCOUNT_FROMSOCIALMEDIA,
source.GIFTCOUNT_SELF,
source.AMOUNT_PARTICIPANTS,
source.AMOUNT_ONLINE,
source.AMOUNT_OFFLINE,
source.AMOUNT_FROMEMAIL,
source.AMOUNT_FROMSOCIALMEDIA,
source.AMOUNT_SELF,
source.AMOUNT_PENDING,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
select @NUMBERPROCESSED=COUNT(*) from dbo.FAFGROUPSUMMARYINFORMATION_CATEGORIZED (nolock)
where DATECHANGED = @CURRENTDATE
end try
begin catch
exec dbo.USP_RAISE_ERROR;
end catch
end