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