Sql 为什么标量UDF函数返回多行?

Sql 为什么标量UDF函数返回多行?,sql,sql-server,udf,Sql,Sql Server,Udf,我有一个标量UDF函数,调用时应该返回一行。它实际上为表中的每一行返回相同的值,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(IncomeAmo

我有一个标量UDF函数,调用时应该返回一行。它实际上为表中的每一行返回相同的值,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

它应该返回一行,但返回27行。

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

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

这是因为在
dbo.DailyIncome
中有27行。标量UDF返回一个值而不是一行。这就解决了这个问题。显然,我对使用这种函数还不熟悉,所以我没有意识到我不需要From语句。非常感谢。没问题。很高兴能帮上忙!