SQLServer中使用语句取各分类中的前几条记录
SQLServer中使用语句取各分类中的前几条记录 建立表结构如下: CREATE table [dbo].[tmp_Trans]( 要求取相同PO_NO按Trans_Date倒序排序的前两条记录。 1.Where子句嵌套SELECT的方式。在嵌套的SELECT语句中可以与主表的字段相关联,达到分类的目的。 这种方式又有三种写法: 1)如果表中有主键,可以用IN的方式。 SELECT * FROM tmp_Trans t 2)如果没有主键,可以用判断在本条记录前有多少条记录的方式。但使用这种方式时如果遇到Trans_Date相同的情况会不准。如当存在Trans_Date最大的记录有三条时,这三条记录都会查出来。 SELECT * 3)使用CROSS APPLY子句。CROSS APPLY是SQL Server 2005后出来的新功能,用于在表连接时传入参数。 SELECT DISTINCT b.* 2.使用自动生成的Row Number。在使用 ROW_NUMBER()时可以用PARTITION BY子句来分组。建议使用这种方式。 select * from ( 查询结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |