此问题已在此处有答案:
Fetch the rows which have the Max value for a column for each distinct value of another column(35个回答)
6天前关闭
我正在使用Oracle SQL并试图返回依赖于most_recent_date
的最新category
。我能够成功地提取most_recent_date
per category
per part no/niin
,但我无法获得所需的完整结果。
我有以下查询:
SELECT DISTINCT
contract,
part_no,
niin,
category,
MAX(date_entered) OVER(PARTITION BY contract, part_no, niin, category) most_recent_date
FROM
( **inner query** )
当前结果:
CONTRACT PN NIIN 1T 01-AUG-08
CONTRACT PN NIIN 7T 19-APR-22
我的最终结果只需要具有最近日期的行。下面需要的行:
CONTRACT PN NIIN 7T 19-APR-22
我尝试再次嵌套select语句,然后尝试选择最近的一行,但仍然收到相同的2行。我还尝试在category
的分组语句中使用most_recent_date
,但也不起作用。
我相信这是个简单的解决办法,但我找不到。
2条答案
按热度按时间ncecgwcz1#
在Oracle中,您可以使用
group by
和keep
语法来获取与最新日期对应的类别:vojdkbi02#
ROW_NUMBER函数根据输入日期的顺序为每行分配一个数字,每个类别从1开始。因此,每个类别中具有最近日期的行将具有数字1。
在外部查询中,我们只选择分配的编号为1的行。这意味着我们为每个类别选择具有最新日期的行。