连续多列中的SQL MAX

时间:2016-07-05 08:50:55

标签: sql sql-server max

我需要从一行中的多个列中获取最大值。 该行看起来像这样:

Col1 || Col2 || Col3 || Col4 ||
100  || 120  || 130  || 140  ||
100  || 130  || 130  || 140  ||
100  || 140  || 130  || 140  ||

我需要获取这些列的最大值,其中col2 = 120 这样结果将作为col4值返回,即140

2 个答案:

答案 0 :(得分:1)

由于它只有4列,一种方法是简单地使用大小写:

SELECT CASE WHEN Col1 >= Col2 AND Col1 >= Col3 AND Col1 >= Col4 THEN Col1
            WHEN Col2 >= Col1 AND Col2 >= Col3 AND Col2 >= Col4 THEN Col2
            WHEN Col3 >= Col1 AND Col3 >= Col2 AND Col3 >= Col4 THEN Col3
            WHEN Col4 >= Col1 AND Col4 >= Col2 AND Col4 >= Col3 THEN Col4
        END As Max
FROM TableName
WHERE Col2 = 120

答案 1 :(得分:1)

这是使用MSSQL Server

SELECT
  (
      SELECT Max(v) 
       FROM (VALUES (Col1), (Col2), (Col3),(Col4)) AS value(v) 
   ) as [MaxDate]
FROM [TableName] 
WHER Col2 = 120