为什么我的标量 UDF 函数 return 不止一行?

Why does my Scalar UDF funciton return more than one row?

我有一个标量 UDF 函数,调用时应该 return 一行。 table 中每一行的值实际上 return 相同 27 次。我可以在调用该函数时轻松添加 'Distinct' 或 'Top 1',但我不必这样做。

功能代码如下:

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

它应该 return 一排但是它 return 是 27.

这是因为您在 dbo.DailyIncome 中有 27 行。 UDF 为每一行调用一次。也许你想要这样的东西:

SELECT dbo.TotalIncome('SPIKE', 'FRI') AS TotalIncome