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)