可能重复:
Is there a Max function in SQL Server that takes two values like Math.Max in .NET?
在Excel中,有一个名为“MAX”的函数接受数字并返回集合中最大的数字。 T-SQL中是否有一个复制此功能的功能?我找不到一个,我写了一个为我做的UDF,但我觉得值得问。
这是我一直在使用的功能:
CREATE FUNCTION dbo.LargerOf
(
-- Add the parameters for the function here
@First FLOAT,
@Second FLOAT
)
RETURNS FLOAT
AS
BEGIN
DECLARE @Result FLOAT
IF @First > @Second
SET @result = @First
ELSE
SET @Result = @Second
RETURN @Result
END
GO
我不希望任何运气,但我认为我至少会问,而不是将我的功能转移到一大堆新服务器上。谢谢!
答案 0 :(得分:10)
我不知道你需要的功能是否存在,但对于一种解决方法,我更喜欢这个
set @max = case when @first > @second then @first else @second end
答案 1 :(得分:4)
您可以使用:
CASE
WHEN @First >= @Second THEN @FIRST
ELSE @Second
END
答案 2 :(得分:4)
声明@first int,@ second int
选择@ first = 45,@ second = 123
从中选择max(a) (选择@first a UNION ALL选择@second)x
- OR
从(values(@first),(@ second))x(a)
中选择max(a)答案 3 :(得分:1)
不幸的是没有。
警告,对于非常密集的使用,我发现标量函数(即使是那些可以像你的CASE
一样容易内联的函数)真的不执行在SQL Server 2005上,如果您正在处理数百万个电话,请将其内联(有时您可以伪造内联TVF)。
希望SQL Server最终会有内联SVF或具有等同于GREATEST
的函数!