Oracle查询,获取最高版本和最高状态

问题描述

为了简单起见,我有一个表,该表包含三列:

process_name
version
status

会有很多行,其中process_name是相同的字符串值,例如“ apple”,但是对于n个“ apple”行,version将来自1-n,其中{{1 }}是最高版本。

为简单起见,状态为n0

简而言之,我想获取进程列表,最高版本以及我未得到的部分,最高版本的状态。这是我的查询失败:
1

解决方法

您聚合:

select process_name,max(version) as version,max(status) keep (dense_rank first order by version desc) as status
from process_definition pd
group by process_name;

这种keep语法是Oracle实现“第一”聚合函数的相当冗长的方式。