CREATE FUNCTION GetAppropriateCRTDataRange( @Duration int, @Currency1 varchar(30), @Currency2 varchar(30), @ExchangeId int, @RangeSettings [DurationCRTAggrItemsList] readonly) RETURNS @Result TABLE( Duration int, CRTD_Period datetime, CRTD_PairSymbol nvarchar(10), ExchangeId int, Rate decimal(22, 8), RateDate datetime) AS Begin if (EXISTS(SELECT 1 FROM @RangeSettings s WHERE @Duration >= s.MinRange AND @Duration <= s.MaxRange AND UPPER(s.Period) = '1H')) Begin INSERT INTO @Result(Duration, CRTD_Period, CRTD_PairSymbol, ExchangeId, Rate, RateDate) SELECT 1, h.CRTD_Period, h.CRTD_PairSymbol, h.ExchangeId, h.CRTD_BidClosingValue, h.CRTD_Period FROM Knoks_Prices.dbo.CRT_Data_1Hour h (nolock) WHERE h.CRTD_PairSymbol = @Currency1 + @Currency2 AND h.ExchangeId = @ExchangeId End Else if (EXISTS(SELECT 1 FROM @RangeSettings s WHERE @Duration >= s.MinRange AND @Duration <= s.MaxRange AND UPPER(s.Period) = '2H')) Begin INSERT INTO @Result(Duration, CRTD_Period, CRTD_PairSymbol, ExchangeId, Rate, RateDate) SELECT 1, h.CRTD_Period, h.CRTD_PairSymbol, h.ExchangeId, h.CRTD_BidClosingValue, h.CRTD_Period FROM Knoks_Prices.dbo.CRT_Data_2Hours h (nolock) WHERE h.CRTD_PairSymbol = @Currency1 + @Currency2 AND h.ExchangeId = @ExchangeId End Else if (EXISTS(SELECT 1 FROM @RangeSettings s WHERE @Duration >= s.MinRange AND @Duration <= s.MaxRange AND UPPER(s.Period) = '4H')) Begin INSERT INTO @Result(Duration, CRTD_Period, CRTD_PairSymbol, ExchangeId, Rate, RateDate) SELECT 1, h.CRTD_Period, h.CRTD_PairSymbol, h.ExchangeId, h.CRTD_BidClosingValue, h.CRTD_Period FROM Knoks_Prices.dbo.CRT_Data_4Hours h (nolock) WHERE h.CRTD_PairSymbol = @Currency1 + @Currency2 AND h.ExchangeId = @ExchangeId End Else if (EXISTS(SELECT 1 FROM @RangeSettings s WHERE @Duration >= s.MinRange AND @Duration <= s.MaxRange AND UPPER(s.Period) = '8H')) Begin INSERT INTO @Result(Duration, CRTD_Period, CRTD_PairSymbol, ExchangeId, Rate, RateDate) SELECT 1, h.CRTD_Period, h.CRTD_PairSymbol, h.ExchangeId, h.CRTD_BidClosingValue, h.CRTD_Period FROM Knoks_Prices..CRT_Data_8Hours h (nolock) WHERE h.CRTD_PairSymbol = @Currency1 + @Currency2 AND h.ExchangeId = @ExchangeId End Else Begin INSERT INTO @Result(Duration, CRTD_Period, CRTD_PairSymbol, ExchangeId, Rate, RateDate) SELECT 1, h.CRTD_Period, h.CRTD_PairSymbol, h.ExchangeId, h.CRTD_BidClosingValue, h.CRTD_Period FROM Knoks_Prices..CRT_Data_1Day h (nolock) WHERE h.CRTD_PairSymbol = @Currency1 + @Currency2 AND h.ExchangeId = @ExchangeId End RETURN; End GO