【问题标题】:Oracle query, get highest version and status of highest versionoracle查询,获取最高版本和最高版本状态
【发布时间】:2020-08-13 00:47:24
【问题描述】:

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

process_name
version
status

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

为简单起见,状态将为01

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

select p.process_name, max(p.version), p2.status from process_definition p 
LEFT JOIN process_definition p2 ON p.process_name = p2.process_name AND p2.version = max(p.version) 
group by p.name order by p.name

【问题讨论】:

    标签: sql oracle join


    【解决方案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 实现“第一”聚合函数的相当冗长的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 2018-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      相关资源
      最近更新 更多