У меня есть следующая функция, которая возвращает новый код на основе Месяца @ Дата
CREATE FUNCTION [dbo].[NewCode](@Date date)
RETURNS nvarchar(4) AS
BEGIN
DECLARE @LastCode nvarchar(4);
SET @LastCode = (SELECT MAX(Code) FROM TABLE1 WHERE MONTH(TDate) = MONTH(@Date))
IF @LastCode IS NULL
SET @LastCode = '0001';
ELSE
BEGIN
SET @LastCode = CONVERT(nvarchar,(CONVERT(int, @LastCode) + 1));
WHILE LEN(@LastCode) < 4
BEGIN
SET @LastCode = '0' + @LastCode;
END
END
RETURN @LastCode;
END
, затем, когда я вставляю новые данные, используя вышеуказанную функцию, я получаю одинаковое значение для каждой строки.
INSERT INTO Table1 SELECT T1, T2, T3, dbo.NewCode(Table2.TDate) FROM Table2
Как сделать так, чтобы эта функция вычисляла оценки для каждой строки, а не для запроса?
Спасибо.