gpt4 book ai didi

Oracle - 从表中选择最新的不同记录

转载 作者:行者123 更新时间:2023-12-02 09:55:10 25 4
gpt4 key购买 nike

理论上这似乎很容易,但我就是无法理解这个......

这是我的表格信息和数据

ID    Heading    Date         Row_Num
1 Test 12-MAR-12 1
1 Test2 13-MAR-12 2
2 Test3 13-MAR-12 3

这是我的查询

select * from 
table1
where date <= :date
order by date desc

:date 例如为 14-MAR-12

这显然会产生所有三个结果,但我想从此查询中获得以下数据

ID    Heading    Date         Row_Num
1 Test2 13-MAR-12 2
2 Test3 13-MAR-12 3

所以我添加了一个distinct,但这并没有按预期工作,因为我必须按每一列进行分组,这样仍然会产生 3 个结果。

关于如何实现我想要的结果有什么想法吗?

最佳答案

您需要使用分析函数。 row_number 函数应该可以解决问题。

select *
from
(
select
id,
heading,
date,
row_number() over ( partition by id order by heading desc nulls last ) r
from table1
)
where r = 1

分析函数可用于对结果集中的行执行分析和分组。在上面的例子中,inner-select 照常查询 table1。 row_number() 函数将每行与其他返回的行进行比较(使用分区语句中提供的聚合)以生成一个数字。在本例中,我们按 ID 分组并按标题降序排序。外部选择有一个 where 子句,用于过滤掉 row_number 不为 1 的行。仅运行内部选择以查看整个过程是如何工作的。

关于Oracle - 从表中选择最新的不同记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9810191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com