从oracle数据库中的一行中的不同列中选择最大值

时间:2015-06-12 09:06:49

标签: sql oracle max oracle-sqldeveloper

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

有任何查询建议吗?

2 个答案:

答案 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不在此处考虑。)

相关问题