USP_DATALIST_RE7APPEALPACKAGEPERFORMANCEREPORT
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@APPEALSELECTIONID | uniqueidentifier | IN | |
@REVENUESELECTIONID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_DATALIST_RE7APPEALPACKAGEPERFORMANCEREPORT
(
@APPEALSELECTIONID uniqueidentifier = null,
@REVENUESELECTIONID uniqueidentifier = null
)
with execute as owner
as
set nocount on;
declare @SQL nvarchar(max);
declare @APPEALSELECTIONNAME nvarchar(300) = '';
declare @REVENUESELECTIONNAME nvarchar(300) = '';
set @SQL = 'with [CONSTITAPPEAL]([ID],[CONSTITUENTID],[APPEALID],[PACKAGEID]) as' + char(13) +
'(' + char(13) +
' select ca.[LOCALID], ca.[CONSTITUENT_LOCALID], ca.[APPEAL_LOCALID], ca.[PACKAGE_LOCALID]' + char(13) +
' from dbo.[V_QUERY_RE7_CONSTITUENTAPPEAL] ca' + char(13);
if @APPEALSELECTIONID is not null
set @SQL += ' inner join dbo.' + dbo.[UFN_MKTSELECTION_GETFUNCTIONNAME](@APPEALSELECTIONID) + ' [APPEALS] on [APPEALS].[ID] = ca.[APPEAL_LOCALID]' + char(13);
set @SQL += '), [REV]([ID],[CONSTITUENTID],[APPEALID],[AMOUNT]) as' + char(13) +
'(' + char(13) +
' select g.[GIFTID], g.[CONSTITUENT_SYSTEMID], g.[APPEALSYSTEMID], g.[SPLITAMOUNT]' + char(13) +
' from dbo.[V_QUERY_RE7_GIFT] g' + char(13);
if @APPEALSELECTIONID is not null
begin
set @SQL += ' inner join dbo.' + dbo.[UFN_MKTSELECTION_GETFUNCTIONNAME](@APPEALSELECTIONID) + ' [APPEALS] on [APPEALS].[ID] = g.[APPEALSYSTEMID]' + char(13);
select @APPEALSELECTIONNAME = [NAME] from dbo.[IDSETREGISTER] where [ID] = @APPEALSELECTIONID;
end
if @REVENUESELECTIONID is not null
begin
set @SQL += ' inner join dbo.' + dbo.[UFN_MKTSELECTION_GETFUNCTIONNAME](@REVENUESELECTIONID) + ' [REVENUES] on [REVENUES].[ID] = g.[GIFTSPLITID]' + char(13);
select @REVENUESELECTIONNAME = [NAME] from dbo.[IDSETREGISTER] where [ID] = @REVENUESELECTIONID;
end
set @SQL += '), [BASE]([APPEALID],[PACKAGEID],[QUANTITY],[RESPONSES],[TOTALGIVING]) as' + char(13) +
'(' + char(13) +
' select' + char(13) +
' isnull(ca.[APPEALID], r.[APPEALID]),' + char(13) +
' ca.[PACKAGEID],' + char(13) +
' count(ca.[ID]) [QUANTITY],' + char(13) +
' count(r.[ID]) [RESPONSES], '+ char(13) +
' sum(isnull(r.[AMOUNT],0)) [TOTALGIVING]' + char(13) +
' from [CONSTITAPPEAL] ca ' + char(13) +
' full outer join [REV] r on ca.[CONSTITUENTID] = r.[CONSTITUENTID] and ca.[APPEALID] = r.[APPEALID]' + char(13) +
' group by ca.[APPEALID], ca.[PACKAGEID], r.[APPEALID]' + char(13) +
'), AGGR([APPEALID],[PACKAGEID],[QUANTITY],[RESPONSES],[TOTALGIVING]) as' + char(13) +
'(' + char(13) +
' select ' + char(13) +
' [BASE].[APPEALID],' + char(13) +
' [BASE].[PACKAGEID],' + char(13) +
' sum([BASE].[QUANTITY]) [QUANTITY],' + char(13) +
' sum([BASE].[RESPONSES]) [RESPONSES],' + char(13) +
' sum([BASE].[TOTALGIVING]) [TOTALGIVING]' + char(13) +
' from [BASE]' + char(13) +
' group by [BASE].[APPEALID], [BASE].[PACKAGEID]' + char(13) +
')' + char(13) +
'select' + char(13) +
' [AGGR].[APPEALID],' + char(13) +
' [APPEAL].[DESCRIPTION] [APPEALNAME],' + char(13) +
' [AGGR].[PACKAGEID],' + char(13) +
' isnull([PACKAGE].[DESCRIPTION], ''None'') [PACKAGENAME],' + char(13) +
' [AGGR].[QUANTITY],' + char(13) +
' [AGGR].[RESPONSES],' + char(13) +
' [AGGR].[TOTALGIVING],' + char(13) +
' cast((case when [AGGR].[QUANTITY] > 0 then cast([AGGR].[RESPONSES] as decimal(19,4)) / cast([AGGR].[QUANTITY] as decimal(19,4)) else 0 end) as decimal(19,4)) as [RESPONSERATE],' + char(13) +
' cast((case when [AGGR].[RESPONSES] > 0 then [AGGR].[TOTALGIVING] / [AGGR].[RESPONSES] else 0 end) as money) as [AVGGIFT],' + char(13) +
' cast((case when [AGGR].[QUANTITY] > 0 then [AGGR].[TOTALGIVING] / [AGGR].[QUANTITY] else 0 end) as money) as [REVENUEPERPIECE],' + char(13) +
' @APPEALSELECTIONNAME [APPEALSELECTIONNAME],' + char(13) +
' @REVENUESELECTIONNAME [REVENUESELECTIONNAME]' + char(13) +
'from [AGGR]' + char(13) +
'inner join dbo.[V_QUERY_RE7_APPEAL] [APPEAL] on [AGGR].[APPEALID] = [APPEAL].[LOCALID]' + char(13) +
'left join dbo.[V_QUERY_RE7_PACKAGE] [PACKAGE] on [AGGR].[PACKAGEID] = [PACKAGE].[LOCALID];';
exec sp_executesql @SQL,N'@APPEALSELECTIONNAME nvarchar(300), @REVENUESELECTIONNAME nvarchar(300)', @REVENUESELECTIONNAME = @REVENUESELECTIONNAME, @APPEALSELECTIONNAME = @APPEALSELECTIONNAME;
return 0;