Я тяну свои волосы сюда.Функция ниже всегда возвращает ноль, даже если она работает нормально, если я вытаскиваю код в окно запроса и устанавливаю входные параметры вручную.Идея состоит в том, что у меня другой запрос, основанный на месяце, потому что среднее значение каждого месяца хранится в другом столбце.Я знаю, что таблица не очень хорошо нормализована, но это то, с чем мне приходится работать.Чего мне не хватает?
ALTER FUNCTION [dbo].[fn_currentShareBal]
(
@currentDate datetime,
@account integer,
@acctType varchar
)
RETURNS money AS
BEGIN
DECLARE @dte char(10)
DECLARE @returnVal money
DECLARE @month int
SET @dte = CONVERT(char(10), @currentDate, 101)
SET @month = MONTH(@currentDate)
-- because of the table strucure the actual query depends on the month
IF @month = 1 SET @returnVal = (SELECT SUM(avg1)
FROM COSHAVG
WHERE cuID = @account
AND avgBalanceMonth = @dte
AND acctType = @acctType)
IF @month = 2 SET @returnVal = (SELECT SUM(avg2)
FROM COSHAVG
WHERE cuID = @account
AND avgBalanceMonth = @dte
AND acctType = @acctType)
IF @month = 3 SET @returnVal = (SELECT SUM(avg3)
FROM COSHAVG
WHERE cuID = @account
AND avgBalanceMonth = @dte
AND acctType = @acctType)
IF @month = 4 SET @returnVal = (SELECT SUM(avg4)
FROM COSHAVG
WHERE cuID = @account
AND avgBalanceMonth = @dte
AND acctType = @acctType)
IF @month = 5 SET @returnVal = (SELECT SUM(avg5)
FROM COSHAVG
WHERE cuID = @account
AND avgBalanceMonth = @dte
AND acctType = @acctType)
IF @month = 6 SET @returnVal = (SELECT SUM(avg6)
FROM COSHAVG
WHERE cuID = @account
AND avgBalanceMonth = @dte
AND acctType = @acctType)
IF @month = 7 SET @returnVal = (SELECT SUM(avg7)
FROM COSHAVG
WHERE cuID = @account
AND avgBalanceMonth = @dte
AND acctType = @acctType)
IF @month = 8 SET @returnVal = (SELECT SUM(avg8)
FROM COSHAVG
WHERE cuID = @account
AND avgBalanceMonth = @dte
AND acctType = @acctType)
IF @month = 9 SET @returnVal = (SELECT SUM(avg9)
FROM COSHAVG
WHERE cuID = @account
AND avgBalanceMonth = @dte
AND acctType = @acctType)
IF @month = 10 SET @returnVal = (SELECT SUM(avg10)
FROM COSHAVG
WHERE cuID = @account
AND avgBalanceMonth = @dte
AND acctType = @acctType)
IF @month = 11 SET @returnVal = (SELECT SUM(avg11)
FROM COSHAVG
WHERE cuID = @account
AND avgBalanceMonth = @dte
AND acctType = @acctType)
IF @month = 12 SET @returnVal = (SELECT SUM(avg12)
FROM COSHAVG
WHERE cuID = @account
AND avgBalanceMonth = @dte
AND acctType = @acctType)
RETURN @returnVal
END
GO