`
weigang.gao
  • 浏览: 490883 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

row_number() over获取每类中最新的一条记录

 
阅读更多

 



 

第一种写法:

select t.tj_agid, t.tj_fwork_ym
	from tbl_dcs_jyyc_rpt t,
			 (select tj_agid, max(tj_ym) maxym
					from tbl_dcs_jyyc_rpt
				 where tj_ismanager = '1'
				 group by tj_agid) k
 where t.tj_ym = k.maxym
	 and t.tj_agid = k.tj_agid
	 and t.tj_ismanager = '1'
	 and t.tj_fwork_ym is not null;

 

 第二种写法(更好的写法,只扫描一次表)

select t1.tj_agid, t1.tj_fwork_ym from
(select t.tj_agid,
       t.tj_fwork_ym,
       row_number() over(partition by t.tj_agid order by t.tj_upddate desc) as seq
 
  from tbl_dcs_jyyc_rpt t where t.tj_ismanager = '1') t1 where t1.seq = 1 and t1.tj_fwork_ym is not null

 

  • 大小: 10.1 KB
分享到:
评论

相关推荐

    SQLServer中Partition By及row_number 函数使用详解

    例如,如果我们有一个包含多个分类(`corp_name`)和提交时间(`submit_time`)的数据表,要查询每个分类的最新记录,`GROUP BY` 无法直接实现,因为我们需要的是每个分类的第一条记录,而不是每组的聚合值。...

    SqlServer 2005中使用row_number()在一个查询中删除重复记录

    `RowNumber > 1` 的条件会删除除每个分区第一行外的所有行,即保留每组唯一记录的第一条。 最后,使用`SELECT * FROM #temp`查看处理后的结果,确认重复记录已被删除。 这个方法的优点在于,它可以在一个查询中...

    mysql去重查询的三种方法

    这样,每个分组的第一条记录(即行号为1的记录)将是最近登录的记录。 #### 2. MySQL 8.0以下版本的类ROW_NUMBER()方法 在MySQL 8.0以下的版本,我们需要使用变量模拟ROW_NUMBER()的功能。以下是一个示例: ```...

    从数据库中读取指定行数记录

    3. **行 (Row)**:表中的一条记录,通常包含多个字段的信息。 4. **列 (Column)**:表中的一类信息,通常具有相同的类型。 #### 二、实现方法 实现从第三条记录开始读取数据的需求,可以通过以下几种方式来实现: ...

    sql分页代码

    `ROW_NUMBER()`函数为每一行分配一个唯一的行号,然后根据这个行号进行分页。例如: ```sql WITH PagedData AS ( SELECT *, ROW_NUMBER() OVER (ORDER BY some_column) AS RowNum FROM table ) SELECT * FROM ...

    Mysql取分组后的每组第一条数据

    然后在外部查询中,我们选取了每一组中`row_num = 1`的记录,即每组的最新一条数据。 需要注意的是,MySQL在某些情况下会创建临时表来处理复杂的查询,例如上述的子查询或者涉及`UNION`,`DISTINCT`,`ORDER BY`与`...

    韩顺平Oracle版的分页查询

    在MyEclipse这样的集成开发环境中,你可以创建一个Java类来封装这些SQL语句,并提供相应的接口供前端调用。同时,为了提高代码的可读性和可维护性,可以使用ORM框架如Hibernate或MyBatis,它们能帮助你更方便地管理...

    SQL Server分组排序取数据的实现

    在示例中,`row_number() over (partition by docno, arbillline order by maturity asc)`创建了一个窗口,其中`PARTITION BY`用于指定分组的列,`ORDER BY`则定义了行号的分配依据。`WHERE x.rowno = 2`则筛选出了...

    Jsp分页查询

    分页查询需要用到`LIMIT`和`OFFSET`子句(在MySQL中)或者`ROW_NUMBER() OVER()`窗口函数(在SQL Server等其他数据库中)。例如,如果每页显示10条记录,当前页为第3页,那么SQL可能如下: ```sql SELECT * FROM ...

    oracle分析函数.doc

    假设我们有一个销售表,包含产品ID、销售日期和销售额,我们可以使用`ROW_NUMBER()`来为每条记录分配一个顺序编号,或者使用`SUM()`函数计算每个产品的累计销售额。 ```sql SELECT product_id, sale_date, sale_...

    从每个分类选择10条记录的sql语句

    在SQL查询中,从每个分类选择10条记录是一个常见的需求,这通常涉及到数据库的数据分组和限制。在这个场景下,我们看到的SQL语句是用于实现这一目标的一个实例。让我们详细探讨一下这个语句的工作原理及其背后的逻辑...

    asp 记录集分页通用类

    例如,在MySQL中,可以使用`SELECT * FROM table LIMIT offset, limit`,而在SQL Server中,可能需要使用`SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY column) AS RowNum, * FROM table) AS ...

    动态分页的实现

    `TOP`用于选择指定数量的记录,而`ROW_NUMBER()`则为每一行生成一个唯一的行号,通过设定特定的范围,我们可以获取到特定页的数据。 例如,假设每页显示10条记录,我们要获取第二页的数据,可以使用以下SQL语句: `...

    SQL Server实现显示每个类别最新更新数据的方法

    最终,查询结果将只包含每个类别中最新更新的记录,数量由`@ShowNums`决定。在这个例子中,对于每个类别,我们将看到最近更新的两条新闻。 总结来说,实现SQL Server显示每个类别最新更新数据的方法包括以下步骤: ...

    一个不错的海量分页

    SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY some_column) AS row_num, * FROM table) WHERE row_num BETWEEN 101 AND 110; ``` 但这种方法的问题在于,随着页码增大,`OFFSET`值也会增加,导致查询性能...

    用于oracle,mysql,sqlserver,数据库分页联合查询

    在这个例子中,`some_column`是用于排序的列,ROW_NUMBER()函数为每一行分配一个行号,然后在外部查询中选择特定范围的行。 现在,我们来看文件`Page.java`可能涉及的内容。这通常是一个Java类,用于处理数据库分页...

    MySql初学者实现的分页代码

    SELECT *, ROW_NUMBER() OVER (ORDER BY id) as row_num FROM 表名 ) SELECT * FROM cte WHERE row_num BETWEEN (当前页 - 1) * 每页记录数 AND 当前页 * 每页记录数; ``` 这里`id`是表的排序字段,`当前页`和`每...

    Hive SQL大厂必考常用窗口函数及面试题.pdf

    1. **定义**:窗口函数在每条记录上执行,而不是像聚合函数那样将多条记录聚合为一条。它可以同时实现GROUP BY子句的分组和ORDER BY子句的排序功能,但PARTITION BY并不具备GROUP BY的汇总功能。 2. **分类**:主要...

    sqlserver中重复数据值只取一条的sql语句

    当数据库表中的某些列有重复的值时,我们可能需要仅选取其中的一条记录,例如,选择每组重复数据的第一条或者最后一条。题目中提到的SQL语句就是解决这类问题的一个示例。 首先,我们创建一个名为`TestData`的数据...

Global site tag (gtag.js) - Google Analytics