sql分组获取第一条记录(sql+oracle)

sql版本

select * from
(select t.CloseDate,t.ExpiryDate,t.DataTypeLookupID,
ROW_NUMBER() over(partition by CloseDate,ExpiryDate,DataTypeLookupID order by CloseDate,ExpiryDate,DataTypeLookupID)
as new_index
from dbo.IndexVolatilityMarketData t
) a where a.new_index=1

oracle版本

select * from (
select t.as_of_date,t.origination_date,t.maturity_date,
rank()over(partition by t.as_of_date,t.origination_date,t.maturity_date order by t.as_of_date,t.origination_date,t.maturity_date) mm from alm_agreement_deposit t)a
where a.mm=1;

时间: 2025-01-02 16:01:48

sql分组获取第一条记录(sql+oracle)的相关文章

Oracle取查询结果数据的第一条记录SQL

Oracle取查询结果数据的第一条记录SQL: select * from (select * from <table> order by <key>) where rownum=1; select * from (select * from <table> order by <key> desc) where rownum=1;

sql分组取第一条数据

sq分组取第一条数据的一个方法: select * from ( select row_number() over(partition by ID order by ID) as rownum , * from table ) as temp where temp.rownum = 1

sql中筛选第一条记录【分组排序】

问题描述 我们现在有一张表titles,共有4个字段,分别是emp_no(员工编号),title(职位),from_date(起始时间),to_date(结束时间),记录的是员工在某个时间段内职位名称,因为会存在升职,转岗之类的,里面emp_no可能会对应多个职位,我们现在要取到所有员工最近的职位信息,包括离职员工. 本文介绍两种方法去实现结果: 方法一 嵌套一个group by+max()子查询获取最近的职位信息. 思路 通过对emp_no分组取每个emp_no对应的最大的from_date:

SQL 分组(分区)排序获取第一条数据 ROW_NUMBER() OVER() PARTITION BY的使用

将最近用到的一些sql 记录下来 首先来看下应用场景: 有一张价格 "订单价格设置" 表如下: 商品编号,价格设置时间id(类似于创建时间,创建时间约早,则act_id越小) ,价格的时间段,商品价格 现在要求选出每个商品价格最大,价格设置时间id最大的那条记录,要求先考虑价格,再考虑设置时间 理想的结果:取出的是第3条记录 和第5条记录 思路:将数据根据item分区,再在每个分区中进行排序,先根据价格排序,再根据设置时间id排序,最后取出每个分组的第一条记录 实现: 利用 ROW_N

SQL 查询每组的第一条记录

CREATE TABLE [dbo].[test1]( [program_id] [int] NULL, [person_id] [int] NULL ) ON [PRIMARY] /*查询每组分组中第一条记录*/ select * from test1 as a where a.person_id in ( select top 1 person_id from test1 where program_id = a.program_id); select * from ( select ROW

Oracle随机选择一条记录SQL

Oracle随机选择一条记录SQL: SELECT * FROM (SELECT * FROM t_enterprise_info order by dbms_random.value) WHERE rownum =1

linq中分组查询而且获取每个分组中的第一条记录,数据用于分页绑定

LINQ分组取出第一条数据 Person1: Id=1, Name="Test1" Person2: Id=1, Name="Test1" Person3: Id=2, Name="Test2" 以上list如果直接使用distinct方法进行过滤,仍然返回3条数据,而需要的结果是2条数据.下面给出解这个问题的方法: 方法1: Distinct 方法中使用的相等比较器.这个比较器需要重写Equals和GetHashCode方法,个人不推荐,感觉较

Oracle分组取第一条数据

看看以前的私密日志,原来自己之前被很多小而简单的问题困惑过! 看着那时候我们还是新手中的新手做的备忘笔记! 其实就是用了Oracle的统计函数而已! 以前的日记(看样子应该是以前公司的源码,呵呵--)如下:勿喷! 对多数据进行分组排序后取每组第一条记录: SELECT * FROM ( SELECT ROW_NUMBER() OVER( PARTITION BY ZA40011_3.URIAGE_DENPYO_NO,ZA40011_3.URIAGE_DENPYO_ROW_NO ORDER BY

执行一条sql语句update多条记录实现思路

执行一条sql语句update多条记录实现思路 如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?本文以一个示例向大家讲解下如何实现如标题所示的情况,有此需求的朋友可以了解下 通常情况下,我们会使用以下SQL语句来更新字段值: UPDATE mytable SET myfield='value' WHERE other_field='other_value'; 但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?举个例子,我的博客有三个分类目录(免