我有一個函數需要2個參數:@iEmployeeID
和@dDate
。SQL函數返回錯誤值
它的目的是找到給定參數的預算費率。換句話說,它應該找到最大日期小於或等於@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 - 當提供了argume
02-02-2010
,它應該返回700.該函數實際上返回800.
錯誤在哪裏?
尋找錯誤: 如果我對數據做了調整,它似乎選擇了最大的速率,如果它有2個值可供選擇。
bughunting:現在,如果我「廢墟」我的數據和編輯700速度810它正確地挑選這個速度時的問題是2010年2月2日。 – DoStuffZ 2010-07-14 13:58:04
啊,有東西。 解給出正確答案: DECLARE @result十進制(38,20) SELECT TOP 1 @result = decRateWeekday FROM tbl_eCon_Target_BudgetRates BR WHERE BR.iRefEmployeeID = @iEmployeeID GROUP BY decRateWeekday,DSTART HAVING MAX(BR .dStart)<= @ dDate ORDER BY dStart DESC RETURN @result 非常感謝你的幫助,我真的很感激它。 – DoStuffZ 2010-07-14 14:02:38