sql2000实现row_number

本文介绍了两种在SQL中实现以特定字段为条件进行分组并为每个分组添加序号的方法。一种适用于SQL Server 2000及以上版本,另一种则针对SQL Server 2005及更高版本。通过实例展示了如何使用子查询和ROW_NUMBER()函数来达到目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、以PersonID,classid,dt_ClassData为条件进行分组,每个小组加序号,row_number在sql2005中不可用
方法一、sql2000及以上版本
--以PersonID,classid,dt_ClassData为条件进行分组,每组加序号 select ID ,(select count(1) from m_LampHistoryDataGet as b where a.dt_ClassData=b.dt_ClassData and a.classid=b.classid and a.PersonID=b.PersonID and b.id<=a.id ) as getnum ,[PersonID] ,[ClassID] ,[dt_GetTime] ,[dt_ClassData] from m_LampHistoryDataGet as a order by PersonID,dt_GetTime 方法二、用于sql2005及以上版本 --以PersonID,classid,dt_ClassData为条件进行分组,每组加序号 select ID ,ROW_NUMBER() over(partition by PersonID,classid,dt_ClassData order by id) as getnum ,[PersonID] ,[ClassID] ,[dt_GetTime] ,[dt_ClassData] from m_LampHistoryDataGet as a order by PersonID,dt_GetTime

二、 显示结果如下

ID     getnum     PersonID       ClassID       dt_GetTime                dt_ClassData
1	1		6		1		2015-01-15 14:50:03.000		2015-01-15 00:00:00.000
2	2		6		1		2015-01-15 14:50:06.000		2015-01-15 00:00:00.000
3	3		6		1		2015-01-15 14:50:10.000		2015-01-15 00:00:00.000
7	4		6		1		2015-01-15 14:50:51.000		2015-01-15 00:00:00.000
4	1		6		1		2015-01-16 14:50:45.000		2015-01-16 00:00:00.000
5	1		143		1		2015-01-15 14:50:45.000		2015-01-15 00:00:00.000
8	2		143		1		2015-01-15 14:50:51.000		2015-01-15 00:00:00.000
6	1		144		1		2015-01-15 14:50:45.000		2015-01-15 00:00:00.000

  

转载于:https://www.cnblogs.com/xiaochun126/p/4226381.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值