USP_SIMPLEDATALIST_CURRENCYEXCHANGERATES
Returns a list of exchange rates for converted from the given currency to teh given currency.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@FROMCURRENCYID | uniqueidentifier | IN | From currency |
@TOCURRENCYID | uniqueidentifier | IN | To currency |
@TYPECODE | tinyint | IN | Type |
@ASOFDATE | datetime | IN | As of date |
Definition
Copy
CREATE procedure dbo.USP_SIMPLEDATALIST_CURRENCYEXCHANGERATES
(
@FROMCURRENCYID uniqueidentifier = null,
@TOCURRENCYID uniqueidentifier = null,
@TYPECODE tinyint = null,
@ASOFDATE datetime = null
)
as
set nocount on;
set @ASOFDATE = dbo.UFN_DATE_GETLATESTTIME(@ASOFDATE);
declare @APPLICABLERATE table(
ID uniqueidentifier,
SOURCECODEID uniqueidentifier,
ASOFDATE datetime,
DATEADDED datetime
)
insert into @APPLICABLERATE(
ID, SOURCECODEID, ASOFDATE, DATEADDED
)
select
CURRENCYEXCHANGERATE.ID,
CURRENCYEXCHANGERATE.SOURCECODEID,
CURRENCYEXCHANGERATE.ASOFDATE,
CURRENCYEXCHANGERATE.DATEADDED
from
dbo.CURRENCYEXCHANGERATE
where
(@FROMCURRENCYID is null or @FROMCURRENCYID = CURRENCYEXCHANGERATE.FROMCURRENCYID)
and (@TOCURRENCYID is null or @TOCURRENCYID = CURRENCYEXCHANGERATE.TOCURRENCYID)
and (@TYPECODE is null or @TYPECODE = CURRENCYEXCHANGERATE.TYPECODE)
and (CURRENCYEXCHANGERATE.ASOFDATE <= @ASOFDATE)
select
RATE.ID as VALUE,
case
when RATE.SOURCECODEID is null
then convert(nvarchar,RATE.ASOFDATE)
else
CURRENCYEXCHANGERATESOURCECODE.DESCRIPTION + ' (' + convert(nvarchar,RATE.ASOFDATE) + ')'
end as LABEL
from
@APPLICABLERATE RATE
inner join (
select
SOURCECODEID,
max(ASOFDATE) MAXDATE
from
@APPLICABLERATE RATE
group by SOURCECODEID
) SOURCEMAXDATE
on SOURCEMAXDATE.MAXDATE = RATE.ASOFDATE
and(SOURCEMAXDATE.SOURCECODEID = RATE.SOURCECODEID
or (SOURCEMAXDATE.SOURCECODEID is null and RATE.SOURCECODEID is null)
)
left join dbo.CURRENCYEXCHANGERATESOURCECODE on CURRENCYEXCHANGERATESOURCECODE.ID = SOURCEMAXDATE.SOURCECODEID
order by RATE.ASOFDATE desc, CURRENCYEXCHANGERATESOURCECODE.DESCRIPTION, RATE.DATEADDED desc;