У меня есть функция, которая принимает 2 параметра: @iEmployeeID
и @dDate
.
Ее цель - найти бюджетную ставку для данных параметров.Другими словами, он должен найти наибольшую дату, меньшую или равную аргументу @dDate
, и вернуть соответствующую ей ставку.
Бюджетные ставки:
Start Rate
------- -----
01-01-2008 600
01-01-2009 800
01-01-2010 700
DECLARE @result decimal(38,20)
SELECT @result = decRate
FROM BudgetRates BR
WHERE BR.iRefEmployeeID = @iEmployeeID
GROUP BY decRate
HAVING MAX(BR.dStart) <= @dDate
RETURN @result
- Когда передается аргумент
06-06-2008
, он корректно возвращает 600. - Когда передается аргумент
03-03-2009
, он корректно возвращает 800 - Когда передается аргумент
02-02-2010
, должно возвращаться 700. Функция на самом деле возвращает 800.
Где ошибка?
охота на ошибки: если я настраиваю цифры, кажется, чтосамая большая ставка, если у нее есть 2 значения для выбора.