T-SQL相当于Excel“MAX”函数返回两个数字中较大的一个

时间:2009-06-12 22:49:24

标签: sql-server tsql excel

  

可能重复:
  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

我不希望任何运气,但我认为我至少会问,而不是将我的功能转移到一大堆新服务器上。谢谢!

4 个答案:

答案 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的函数!