为什么我的标量 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
我有一个标量 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