2016-07-05 63 views
-8

我需要從單個行中的多個列中獲取最大值。 行看起來是這樣的:連續多列的SQL MAX

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

我需要獲取這些列的最大值,其中COL2 = 120 使返回結果爲COL4值是140

+0

用樣本數據添加更多行,並指定預期結果。 – jarlh

+1

您正在使用哪些DBMS? –

回答

0

因爲它是唯一的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 
+0

只要表中沒有NULL即可。 – jarlh

+0

@jarlh正確。 –

+0

任何通用方法僅作爲示例,各個表的列可能有所不同 –

1

這是利用MSSQL服務器

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

'value(v)'是什麼意思?那是什麼樣的別名? – Greg