Как написать функцию для вычисления значения столбца, как описано на этом рисунке?Функция для расчета текущего баланса столбца при вставке строки
Это код, который я пробовал:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION RunningBal
(
-- Add the parameters for the function here
@Dr INT,
@Cr INT,
@Code NVARCHAR(5)
)
RETURNS INT
AS
BEGIN
-- Declare the return variable here
DECLARE @CurrentRunningBal INT
-- Add the T-SQL statements to compute the return value here
DECLARE @PreviouBal INT
SET @PreviouBal = (SELECT TOP(1) [RunningBal] FROM Test WHERE Code = @Code ORDER BY ID DESC)
if(@PreviouBal IS NULL)
SET @PreviouBal = 0
SET @CurrentRunningBal = @PreviouBal + @Dr - @Cr
-- Return the result of the function
RETURN @CurrentRunningBal
END
GO
Когда я пытаюсь выполнить это, я получаю следующее сообщение об ошибке и понятия не имеют, как решить эту проблему.
НЕ использовать рекурсивную функцию, как это. Нет необходимости создавать функцию для вычисления общей суммы. Какую версию SQL Server вы используете? Лучший подход значительно варьируется в зависимости от того, находитесь ли вы на 2012+ или раньше. –
SQL Server 2014 –
Возможный дубликат [Рассчитать текущий общий/текущий баланс] (http://stackoverflow.com/questions/11310877/calculate-running-total-running-balance) – AHiggins