Select oracle 数据库中一行中不同列的最大值

Select max value from different column in a row in oracle database

我在oracle数据库中的table是这样的:

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

有什么查询建议吗?

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这里不考虑。)

使用GREATEST函数

SELECT Rollno, GREATEST (mark1, Mark2, mark3) AS Maxv
FROM yourtable