2014-01-23 69 views
0

我有三個值,我必須找到這些值MAX查找聲明的值(變量)MAX值

例子:

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

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

我必須找到50這樣

+0

一個臨時表會解決這個問題'聲明@tmpTable表(價值整數)',插入你的價值觀臨時表,並選擇'MAX(值)' –

回答

3

您應該使用這樣的代碼:

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()只接受1個參數,即表中的列名。

但是,如果你必須使用變量,那麼:

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 
+0

謝謝你拉杜先生。它的好... –

+0

不要忘記,如果你找到了一個最適合你的答案,那麼把這個答案標記爲正確答案。 –

2

你不應該浪費在臨時表的解決方案資源。

只是使所有這些變量的聯合。

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 
0
SELECT max(v) 
    FROM (
     SELECT 1 as v UNION 
     SELECT 2 as v UNION 
     SELECT 3 as v 
    ) t 
5
DECLARE @r int=10, @s int=15, @t int=50 

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