【发布时间】:2016-04-13 02:05:16
【问题描述】:
我有一个标量 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 返回一个 value 而不是一个 row。
标签: sql sql-server udf