1、使用Oracle中自带的方法
Oracle中自带了一个greatest()
方法,通过这个方法可以快速解决获取最大值的问题。
例如:
SELECT key
,GREATEST(GREATEST(x,y),z) AS greatest
FROM greatests;
2. 使用case来判断获取(基本通用)
SELECT key
,CASE WHEN (case
WHEN x < y THEN y ELSE x END) < z THEN z ELSE (case
WHEN x < y THEN y ELSE x END) END AS greatest
FROM Gratests;
3. 先进行行列转换,然后使用 MAX 函数来求解
--其中TMP为自定义的表名
SELECT key
,MAX(col) AS greatest
FROM
(
SELECT key
,x AS col
FROM Greatests
UNION ALL
SELECT key
,y AS col
FROM Greatests
UNION ALL
SELECT key
,z AS col
FROM Greatests
)TMP
GROUP BY key;