Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从声明的值(变量)中查找最大值_Sql Server_Tsql - Fatal编程技术网

Sql server 从声明的值(变量)中查找最大值

Sql server 从声明的值(变量)中查找最大值,sql-server,tsql,Sql Server,Tsql,我有三个值,我必须从这些值中找到MAX值 例如: DECLARE @r int=10 DECLARE @s int=15 DECLARE @t int=50 SELECT MAX(@r, @s, @t) 我必须找到这样的50个您应该使用这样的代码: DECLARE @temp TABLE (a INTEGER) INSERT INTO @temp VALUES(1) INSERT INTO @temp VALUES(2) INSERT INTO @temp VALUES(3) SELEC

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

例如:

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

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

我必须找到这样的50个

您应该使用这样的代码:

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
不能对更多变量运行
MAX
MAX()
只接受一个参数,即表中的列名

但是,如果必须使用变量,则:

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

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

只要把所有这些变量联合起来就行了


临时表将解决该问题
declare@tmpTable table(value integer)
,将您的值插入临时表并选择
max(value)
不要忘记,如果您找到了最适合您的答案,请将该答案标记为正确答案。
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
SELECT max(v)
    FROM (
       SELECT 1 as v UNION
       SELECT 2 as v UNION
       SELECT 3 as v
     ) t
DECLARE @r int=10,  @s int=15, @t int=50

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