在 SQL Server 上,如何从几个变量中查找 MAX 或 MIN 值

On SQL Server, how to find the MAX or MIN value out of a couple of variables

提问人:Lumpi 提问时间:10/13/2011 最后编辑:marc_sLumpi 更新时间:10/13/2011 访问量:4733

问:

我刚刚发现 SQL 中的 MAX() 函数仅适用于列。

我是否可以使用类似的函数来从这四个变量中查找最大值?

SET @return = MAX(@alpha1, @alpha2, @alpha3, @alpha4)

或者我必须先把它们放在一列中(从而先创建一个表......;-( )?

问候

隆比

sql-server 最大

评论


答:

10赞 Igor Borisenko 10/13/2011 #1

T-SQL 中没有用于此目的的内置函数,但可以使用以下内容

SELECT @result = MAX(alpha)
FROM   (SELECT @alpha1
        UNION ALL
        SELECT @alpha2
        UNION ALL
        SELECT @alpha3) T(alpha);  

或 (SQL Server 2008+)

SELECT @result = MAX(alpha)
FROM  (VALUES(@alpha1),
             (@alpha2),
             (@alpha3)) T(alpha);  

评论

0赞 Lumpi 10/13/2011
谢谢!为什么备选方案 1 不适用于较早的 SQl 服务器版本?
3赞 Martin Smith 10/13/2011
@Lumpi - 备选方案 2 我想你的意思是?直到该版本才引入行值构造器。
0赞 Roman Pekar 11/12/2014
我真的很想念 Postgress - postgresql.org/docs/current/static/functions-conditional.html 的功能。阅读和使用它们要容易得多......least()greatest()