USP_KPI_REVENUE_SELECTIONMONEYTOTAL_INTERNAL_2
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ASOFDATE | datetime | IN | |
@TOTAL | money | INOUT | |
@AGGREGATENAME | nvarchar(10) | IN | |
@CURRENCYID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_KPI_REVENUE_SELECTIONMONEYTOTAL_INTERNAL_2
@ASOFDATE datetime,
@TOTAL money = 0 output,
@AGGREGATENAME nvarchar(10) = 'SUM', --Possible values SUM,AVG,MIN,MAX
@CURRENCYID uniqueidentifier = null
as
set nocount on;
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
declare @DECIMALDIGITS tinyint;
declare @ROUNDINGTYPECODE tinyint;
if @CURRENCYID is null
set @CURRENCYID = @ORGANIZATIONCURRENCYID;
select
@DECIMALDIGITS = DECIMALDIGITS,
@ROUNDINGTYPECODE = ROUNDINGTYPECODE
from
dbo.CURRENCY
where
CURRENCY.ID = @CURRENCYID;
if @AGGREGATENAME='SUM'
select @TOTAL = coalesce(SUM(REVENUE.AMOUNTINCURRENCY), 0) from dbo.UFN_REVENUE_GETAMOUNTSINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) AS REVENUE
/*#IDSETEXTENSION*/
where REVENUE.DATE <= @ASOFDATE
else if @AGGREGATENAME='AVG'
select @TOTAL = coalesce(AVG(REVENUE.AMOUNTINCURRENCY), 0) from dbo.UFN_REVENUE_GETAMOUNTSINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) AS REVENUE
/*#IDSETEXTENSION*/
where REVENUE.DATE <= @ASOFDATE
else if @AGGREGATENAME='MIN'
select @TOTAL = coalesce(MIN(REVENUE.AMOUNTINCURRENCY), 0) from dbo.UFN_REVENUE_GETAMOUNTSINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) AS REVENUE
/*#IDSETEXTENSION*/
where REVENUE.DATE <= @ASOFDATE
else if @AGGREGATENAME='MAX'
select @TOTAL = coalesce(MAX(REVENUE.AMOUNTINCURRENCY), 0) from dbo.UFN_REVENUE_GETAMOUNTSINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) AS REVENUE
/*#IDSETEXTENSION*/
where REVENUE.DATE <= @ASOFDATE
else
BEGIN
SET @TOTAL =0;
RAISERROR('Valid values for @AGGREGATENAME are SUM, AVG, MIN, and MAX.',16,10);
END