CREATE TABLE table1( [ID] [bigint] IDENTITY(1,1) NOT NULL, [Name] [nvarchar]() NOT NULL, [class] int not null, [date] datetime not null)class 表示分类编号。 分类数不固定, 至少有上千种分类 date 表示该条记录被更新的时间 我们现在想获得每个分类最新被更新的5条记录。 解决方案 select id,name,class,date from(select id,name,class,date ,row_number() over(partition by class order by date desc)as rowindex from table1) awhere rowindex <= 5 create table #temp ( company varchar(), product varchar(), inputDate datetime ) insert into #temp(company,product,inputDate) values('杭州大明有限公司','汽车1','-8-1') insert into #temp(company,product,inputDate) values('杭州大明有限公司','汽车2','-8-1') insert into #temp(company,product,inputDate) values('杭州大明有限公司','汽车3','-8-1') insert into #temp(company,product,inputDate) values('杭州大明有限公司','汽车4','-8-1') insert into #temp(company,product,inputDate) values('杭州大明有限公司','汽车5','-7-1') insert into #temp(company,product,inputDate) values('北京小科有限公司','汽车1','-8-1') insert into #temp(company,product,inputDate) values('北京小科有限公司','汽车2','-8-1') insert into #temp(company,product,inputDate) values('北京小科有限公司','汽车3','-8-1') insert into #temp(company,product,inputDate) values('北京小科有限公司','汽车4','-8-1') insert into #temp(company,product,inputDate) values('上海有得有限公司','汽车1','-8-1') insert into #temp(company,product,inputDate) values('上海有得有限公司','汽车2','-8-1') insert into #temp(company,product,inputDate) values('上海有得有限公司','汽车3','-8-1') insert into #temp(company,product,inputDate) values('上海有得有限公司','汽车4','-8-1') insert into #temp(company,product,inputDate) values('天津旺旺有限公司','汽车4','-8-1') insert into #temp(company,product,inputDate) values('天津旺旺有限公司','汽车5','-8-1') select * from #temp create proc getdata @num int as begin select top 4 * from ( select ( select count(*) from #temp where company=a.company and product<=a.product) as 序号,a.company,a.product,a.inputDate from #temp a ) b where 序号>=@num order by 序号,inputDate desc end go getdata 2 /* 结果 1 杭州大明有限公司 汽车1 -- ::. 1 北京小科有限公司 汽车1 -- ::. 1 上海有得有限公司 汽车1 -- ::. 1 天津旺旺有限公司 汽车4 -- ::. 2 天津旺旺有限公司 汽车5 -- ::. 2 上海有得有限公司 汽车2 -- ::. 2 北京小科有限公司 汽车2 -- ::. 2 杭州大明有限公司 汽车2 -- ::. 3 杭州大明有限公司 汽车3 -- ::. 3 北京小科有限公司 汽车3 -- ::. 3 上海有得有限公司 汽车3 -- ::. 4 北京小科有限公司 汽车4 -- ::. 4 北京小科有限公司 汽车4 -- ::. 4 上海有得有限公司 汽车4 -- ::. 4 杭州大明有限公司 汽车4 -- ::. 5 杭州大明有限公司 汽车5 -- ::. */ --sql create proc getdata @num int as begin select top 4 * from ( select row_number() over (partition by company order by product ) as 序号,a.company,a.product,a.inputDate from #temp a ) b where 序号>=@num order by 序号,inputDate desc end getdata 4 select * from #temp select ( select count(*) from #temp where company+ product<=a.company+a.product) as 序号,a.company,a.product,a.inputDate ,a.company+a.product as 唯一标志一行 from #temp a order by company,product
推荐整理分享每个分类取最新的几条的SQL实现代码(分类不同),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:excel求每个分类的总数,excel求每个分类的总数,根据分类拆分多个sheet,分类如何,excel求每个分类的总数,分类提取excel内容,分类提取excel内容,根据分类拆分多个sheet,内容如对您有帮助,希望把文章链接给更多的朋友!
SQL参数化查询的另一个理由 命中执行计划 1概述SQL语言的本质就是一串伪代码,表达的是做什么,而不是怎么做的意思。如其它语言一样,SQL语句需要编译之后才能运行,所以每一条SQL是需要通
SQL Server重温 事务 为什么使用事务当对多个表进行更新的时候,某条执行失败。为了保持数据的完整性,需要使用事务回滚。显示设置事务begintrybegintransactioninsertintoshiwu(a
sql 存储过程批量删除数据的语句 CreatePROCEDUREBatch_Delete@TableNamenvarchar(),--表名@FieldNamenvarchar(),--删除字段名@DelCharIndexIDnvarchar()asDECLARE@PointerPrevintDECLARE@PointerCurrintDECLARE@TIdNVARCHAR(),@