Oracle:从同一行的不同列中选择最大值
整个问题几乎都在标题中。对于表的每一行,我想选择列子集的最大值。
例如,从此表中,
name m1 m2 m3 m4
A 1 2 3 4
B 6 3 4 5
C 1 5 2 1
结果将是
name max
A 4
B 6
C 5
查询必须与 Oracle 8i 兼容。
The whole question is pretty much in the title. For each row of the table I'd like to select the maximum of a subset of columns.
For example, from this table
name m1 m2 m3 m4
A 1 2 3 4
B 6 3 4 5
C 1 5 2 1
the result would be
name max
A 4
B 6
C 5
The query must be compatible oracle 8i.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
给定这个测试数据……
一个简单的 GREATEST() 调用将给出所需的结果:
请注意,如果任何参数为 null,
greatest()
将返回 NULL。如果这是一个问题,请使用 nvl() 提供一个不会扭曲结果的默认值。例如,如果没有值可以为负......Given this test data ...
... a straightforward GREATEST() call will give the desired result:
Note that
greatest()
will return NULL if any of the arguments are null. If this is a problem then usenvl()
to provide a default value which won't distort the outcome. For instance, if no values can be negative....使用
GREATEST
但也处理可能的NULL
输入:
输出:
SQL Fiddle:http://sqlfiddle.com/#!4/ae268/7/0
输入:
输出:
SQL Fiddle:http://sqlfiddle.com/#!4/b1c46/1/0
Use
GREATEST
but also handle possibleNULL
'sInput:
Output:
SQL Fiddle: http://sqlfiddle.com/#!4/ae268/7/0
Input:
Output:
SQL Fiddle: http://sqlfiddle.com/#!4/b1c46/1/0