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