У меня есть скалярная функция UDF, которая должна возвращать одну строку при вызове. Он фактически возвращает одно и то же значение для каждой строки в таблице, 27 раз. Я могу легко добавить «Distinct» или «Top 1», когда я вызываю функцию, но мне не нужно.Почему моя скалярная функция UDF возвращает более одной строки?
Вот код функции:
CREATE FUNCTION dbo.TotalIncome(@name AS VARCHAR(10), @weekday AS VARCHAR(10))
RETURNS INT
AS
BEGIN
DECLARE @total int;
SELECT @total = SUM(IncomeAmount)
FROM DailyIncome
WHERE VendorName = @name
AND EachDay = @weekday;
IF (@total IS NULL)
SET @total = 0;
RETURN @total;
END;
Вот код, в котором я вызываю функцию:
SELECT dbo.TotalIncome('SPIKE', 'FRI') AS TotalIncome
FROM dbo.DailyIncome
Он должен возвращать одну строку, но она возвращает 27.
Это потому, что у вас есть 27 строк в 'dbo.DailyIncome'. –
Скалярный UDF возвращает одно значение * не одну строку *. –