我有三个值,我必须从这些值中找到MAX
值
示例:
DECLARE @r int=10
DECLARE @s int=15
DECLARE @t int=50
SELECT MAX(@r, @s, @t)
我必须找到50这样的
答案 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
您无法在更多变量上运行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
答案 2 :(得分:3)
您不应该使用临时表解决方案浪费资源。
只需将所有这些变量联合起来。
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