我在oracle数据库中的表是这样的:
Rollno | mark1 | Mark2 | mark3
--------+-----------+-----------+--------+
101 | 10 | 20 | 30
102 | 22 | 44 | 08
103 | 55 | 11 | 14
--------+-----------+-----------+--------+
我希望输出像
Rollno | MAX(Mark1,mark2,mark3)
--------+-------------------------+
101 | 30
102 | 44
103 | 55
--------+-------------------------+
有任何查询建议吗?
答案 0 :(得分:4)
使用GREATEST
功能
SELECT Rollno, GREATEST (mark1, Mark2, mark3) AS Maxv
FROM yourtable
答案 1 :(得分:1)
ANSI SQL
的答案,在指定Oracle之前编写:
使用CASE
查找最大列值:
select Rollno, case when mark1 > mark2 and mark1 > mark3 then mark1
when mark2 > mark3 then mark2
else mark3 end as max_value
from tablename
(NULL
不在此处考虑。)