USP_KPI_BBNC_ONLINETOTALAMOUNT
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@VALUE | money | INOUT | |
@ASOFDATE | datetime | IN | |
@DATEFILTER | tinyint | IN | |
@TYPECODES | xml | IN | |
@AGGREGATENAME | nvarchar(10) | IN |
Definition
Copy
CREATE procedure dbo.USP_KPI_BBNC_ONLINETOTALAMOUNT
@VALUE money output,
@ASOFDATE datetime,
@DATEFILTER tinyint = null,
@TYPECODES xml = null,
@AGGREGATENAME nvarchar(10) = 'SUM' --Possible values SUM,AVG,MIN,MAX
as
set nocount on;
if @DATEFILTER is null begin
set @DATEFILTER = 10; -- all dates;
end
declare @GIFTTYPESFILTER table(TYPECODE tinyint primary key);
/*@TYPECODES will not be null if this SP is driven from the UI. Just in case, apply the default value.*/
if @TYPECODES is null begin
insert into @GIFTTYPESFILTER(TYPECODE) values (0)
end else begin
insert into @GIFTTYPESFILTER(TYPECODE) select distinct
T.c.value('(TYPECODEID)[1]','tinyint')
FROM @TYPECODES.nodes('/TYPECODES/ITEM') T(c)
end
declare @STARTDATE datetime;
declare @ENDDATE datetime;
exec dbo.USP_RESOLVEDATEFILTER @DATEFILTER=@DATEFILTER, @STARTDATE=@STARTDATE output, @ENDDATE=@ENDDATE output, @ASOFDATE=@ASOFDATE;
if @AGGREGATENAME='SUM' begin
select
@VALUE = coalesce(SUM(R.REVENUEAMOUNT), 0)
from
dbo.UFN_BBNC_KPI_ALLREVENUEFORCHANNEL(@STARTDATE, @ENDDATE) as [R]
inner join
@GIFTTYPESFILTER as GIFTTYPESFILTER on GIFTTYPESFILTER.TYPECODE = R.REVENUETYPECODE
end else if @AGGREGATENAME='AVG' begin
select
@VALUE = coalesce(AVG(R.REVENUEAMOUNT), 0)
from
dbo.UFN_BBNC_KPI_ALLREVENUEFORCHANNEL(@STARTDATE, @ENDDATE) as [R]
inner join
@GIFTTYPESFILTER as GIFTTYPESFILTER on GIFTTYPESFILTER.TYPECODE = R.REVENUETYPECODE
end else if @AGGREGATENAME='MIN' begin
select
@VALUE = coalesce(MIN(R.REVENUEAMOUNT), 0)
from
dbo.UFN_BBNC_KPI_ALLREVENUEFORCHANNEL(@STARTDATE, @ENDDATE) as [R]
inner join
@GIFTTYPESFILTER as GIFTTYPESFILTER on GIFTTYPESFILTER.TYPECODE = R.REVENUETYPECODE
end else if @AGGREGATENAME='MAX' begin
select
@VALUE = coalesce(MAX(R.REVENUEAMOUNT), 0)
from
dbo.UFN_BBNC_KPI_ALLREVENUEFORCHANNEL(@STARTDATE, @ENDDATE) as [R]
inner join
@GIFTTYPESFILTER as GIFTTYPESFILTER on GIFTTYPESFILTER.TYPECODE = R.REVENUETYPECODE
end else begin
set @VALUE =0;
raiserror('Valid values for @AGGREGATENAME are SUM, AVG, MIN, and MAX.',16,10);
end
if @VALUE is null begin
set @VALUE = 0;
end