如何使用 Oracle SQL 显示列的最大值并显示所有行

问题描述 投票:0回答:1

我有一个 POLICIES 表,其中包含如下数据:

POLICY NAME  VERSION NUMBER
Policy ABC   1.0
Policy ABC   1.1
Policy ABC   2.0
Policy DEF   1.0
Policy DEF   1.5
Policy GHI   1.0
Policy GHI   2.0
Policy GHI   3.2

我想要看到的是单独列中的最新(最高)版本号,这样我就知道当前是什么。假设最高版本号是当前版本。

POLICY NAME  VERSION NUMBER  CURRENT VERSION
Policy ABC              1.0              2.0
Policy ABC              1.1              2.0
Policy ABC              2.0              2.0
Policy DEF              1.0              1.5
Policy DEF              1.5              1.5
Policy GHI              1.0              3.2
Policy GHI              2.0              3.2
Policy GHI              3.2              3.2

我的 SQL 技能至少可以说是基本的,到目前为止我最接近的是:

select Policy_Name, Version_Number, max(Version_Number) AS Current_Version
from POLICIES
group by Policy_Name, Version_Number;

这给了我这个:

POLICY NAME  VERSION NUMBER  CURRENT VERSION
Policy ABC              1.0              1.0
Policy ABC              1.1              1.1
Policy ABC              2.0              2.0
Policy DEF              1.0              1.0
Policy DEF              1.5              1.5
Policy GHI              1.0              1.0
Policy GHI              2.0              2.0
Policy GHI              3.2              3.2

我想我想要一个子查询来查找每个策略名称的最大值,但我不太明白。

sql oracle max
1个回答
0
投票

使用

MAX
分析函数:

SELECT policy_name,
       version_number,
       MAX(version_number) OVER (PARTITION BY policy_name) AS current_version
FROM   policies;
© www.soinside.com 2019 - 2024. All rights reserved.