sql2000实现row_number

一、以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

  

时间: 2024-11-25 22:52:03

sql2000实现row_number的相关文章

sql server 增加分组序号

SQL2000自制row_number SELECT (SELECT COUNT(*) FROM main1 p1 WHERE p1.编号 <= p2.编号) AS rowNumber, *  FROM main1 p2  ORDER BY 编号 很简单,但是数据量大的时候会十分的消耗性能 sql server2005以后 ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)原创置顶 一彡十 最后发布于2018-09-18 19:11:38 阅读数 92385 收藏展开 和彡

thinkphp5访问sql2000数据库

大家都知道php跟mysql是绝配,但是因为有时候工作需要,要求php访问操作sql2000,怎么办呢? 一般来说有两种方式: 1. sqlsrv驱动方式 2. odbc方式 sqlsrv驱动方式,因为微软公司原因,不提供sql2000的访问驱动,只提供了sql2005以上的驱动,所以如果你的数据库是2005以上版本,特别是sql2008r2,到微软官方可以下载到sql2008 for php的驱动,网上有很多文章介绍,我的博客里有篇文章 http://www.cnblogs.com/skyso

sql2000数据库误删除后自行恢复二次覆盖成功恢复

sql2000数据库误删除后自行恢复二次覆盖成功恢复 [数据恢复故障描述] 今天接到一个客户电话,他的速达sql2000数据库,数据库误删除了,关键之前还没有备份过.他就想自己尝试恢复,使用网上下载的恢复工具恢复出一些数据之后,本来数据库在E盘,结果他又将恢复的数据保存在了E盘,造成了二次覆盖.结果数据库附加不上,他才意识到事情的严重性,联系到我们. 错误如图下图: [数据恢复解决方案] 工程师使用自主研发的数据库恢复软件,手工提取碎片,进行数据库碎片重组与恢复软件远程恢复成功! [数据库修复结

SQL Server 2008 R2——ROW_NUMBER() 去掉不同行中相同列的重复内容

USE tempdb GO -------------------------------------------------------------------------- IF OBJECT_ID('Student','U') IS NOT NULL DROP TABLE Student GO CREATE TABLE Student ( StuID NVARCHAR(8) PRIMARY KEY, Name NVARCHAR(5) ) GO INSERT INTO Student(Stu

安装SQL2000,提示安装程序配置服务器失败。

在安装SQL Server 2000时,安装快要完成,到最后提示一个错误,怎么解决呢,不急,请看下面的方法: 把上次安装时产生的"Microsoft SQL Server"文件夹删掉,一般所在路径为 C:\Program Files\Microsoft SQL Server D:\Program Files\Microsoft SQL Server 注意:删除Microsoft SQL Server文件夹时,先确定数据是否备份,先备份再删除,如果不小心删除了,找不回来了,那可麻烦了.一

LINQ to SQL 模拟实现 ROW_NUMBER() OVER(ORDER BY ...) 的功能

?  前言 本来是想使用 LINQ 实现类似 SQL: ROW_NUMBER() OVER(ORDER BY -) 的功能,但是貌似 LINQ 不支持,反正没找到解决办法,无奈使用了LINQ Select() 方法实现. 1)   需求,需要实现一下 SQL: SELECT TOP 10 ROW_NUMBER() OVER(ORDER BY T.TotalAmount DESC) AS SN, * FROM ( SELECT T2.Name, SUM(T2.Amount) AS TotalAmo

sql 两种分页offset和row_number简单分析

新建临时表字段id,向临时表里插入1,2,3,4,5,6 if object_id('tempdb..#test') is not null drop table #test create table #test(id int)insert into #test(id)values(1),(2),(3),(4),(5),(6) declare @page int---当前页面declare @rows int---页面大小set @page=2set @rows=3 ---------当前页面为

(美国云VPS)安装SQL2000图解教程 (一株网络)

1.下载http://1.80000.cc/x86/SQL挂起.rar   双击里面的注册表,可预防安装时提示挂起操作, 2.下载http://1.80000.cc/x86/SQL2000.rar    这是数据库安装文件,下载到D盘,解压出来 运行如下图: 双击如上图选中的应用程序,弹出窗口,选择第一个如下图 如下图,第一个 如下图继续: 然后一路下一步,直到弹出如下图所示 分别点击如上图两处浏览位置,将安装路径改到D盘,如下图 改完后如下图: 然后下一步,按照下图选择:使用本地系统账户 再下

用oracle中的Row_Number实现分页

Row_Number实现分页 1:首先是 select ROW_NUMBER() over(order by id asc) as 'rowNumber', * from table1 生成带序号的集合 2:再查询该集合的 第 1  到第 5条数据 select * from     (select ROW_NUMBER() over(order by id asc) as 'rowNumber', * from table1) as temp    where rowNumber betwee