我想做这样的事情:
select MAX(field1), field2 from tbl1 group by field1
但上面的查询并不起作用(sqlplus抛出错误)。如何在单个查询中实现上述目标(目前,我已将其拆分为两个查询以获得结果)。
答案 0 :(得分:2)
您可以在其中使用内联视图和分析函数(max() over()
)来选择时间戳最大的行:
select field1, field2 from
(select field1, field2, max(field1) over() as max_field1
from tbl1)
where field1 = max_field1;
请注意,如果有许多记录的时间戳值为max_field1
,则会返回它们(按任意顺序)。
答案 1 :(得分:2)
在Oracle 12中,您可以使用:
select t.*
from tbl1
order by field1 desc
fetch first 1 row only;
早期版本需要具有相同功能的子查询:
select t.*
from (select t.*
from tbl1
order by field1 desc
) t
where rownum = 1;
请注意,如果max在多行中,则答案答案可以返回多行。你的问题不清楚是否可取。这些版本只返回一行。