从声明的值(变量)中查找MAX值

时间:2014-01-23 09:15:41

标签: sql-server tsql

我有三个值,我必须从这些值中找到MAX

示例:

DECLARE @r int=10
DECLARE @s int=15
DECLARE @t int=50

SELECT MAX(@r, @s, @t) 

我必须找到50这样的

4 个答案:

答案 0 :(得分:6)

DECLARE @r int=10,  @s int=15, @t int=50

SELECT max(val)
  from (values(@r),(@s),(@t)) X(val)

答案 1 :(得分:5)

你应该使用这样的代码:

DECLARE @temp TABLE (a INTEGER)
INSERT INTO @temp VALUES(1)
INSERT INTO @temp VALUES(2)
INSERT INTO @temp VALUES(3)

SELECT MAX(a) FROM @temp

您无法在更多变量上运行MAXMAX()只接受一个参数,即表中的列名。

但是,如果你必须使用变量,那么:

DECLARE @temp TABLE(col1 INTEGER)

DECLARE @r int=10
DECLARE @s int=15
DECLARE @t int=50

INSERT INTO @temp(col1) values(@r)
INSERT INTO @temp(col1) values(@s)
INSERT INTO @temp(col1) values(@t)

SELECT MAX(col1) FROM @temp

答案 2 :(得分:3)

您不应该使用临时表解决方案浪费资源。

只需将所有这些变量联合起来。

sqlFiddle

DECLARE @r int=10

DECLARE @s int=15

DECLARE @t int=50

SELECT max(t.value)
  from (select @r as value
        union
        select @s as value
        union
        select @t as value) t

答案 3 :(得分:0)

SELECT max(v)
    FROM (
       SELECT 1 as v UNION
       SELECT 2 as v UNION
       SELECT 3 as v
     ) t