SQL里面,怎样与上一条记录作对比?
答案:7 悬赏:50 手机版
解决时间 2021-03-23 04:33
- 提问者网友:绫月
- 2021-03-22 03:51
SQL里面,怎样与上一条记录作对比?
最佳答案
- 五星知识达人网友:摆渡翁
- 2021-03-22 05:10
首先,在建立表的时候建立一个自增ID,或者用自己的方式建立ID累加作为表的索引,或者建立一个字段用getData()方法获取长日期+长时间。
如果是表里面写入操作,就要写存储过程,先判断Select Max(id) as 字段1 from [表名]中id是多少,然后把筛选出来的id和当前的@参数相对比;如果是在视图中做数据分析,就直接把select top 2 * from 表 order by id desc做成视图,对比它里面两条记录就可以。
如果是表里面写入操作,就要写存储过程,先判断Select Max(id) as 字段1 from [表名]中id是多少,然后把筛选出来的id和当前的@参数相对比;如果是在视图中做数据分析,就直接把select top 2 * from 表 order by id desc做成视图,对比它里面两条记录就可以。
全部回答
- 1楼网友:走死在岁月里
- 2021-03-22 10:47
这个还有点难度
如果只是选出不重复的用distinct 函数就可以了
如果只是选出不重复的用distinct 函数就可以了
- 2楼网友:佘樂
- 2021-03-22 10:22
如果这些数据是你自己插入的,你可以在建一个字段,把对应的第二条记录插入新建字段的第一条记录,以此类推,这样就能比较了
- 3楼网友:拜訪者
- 2021-03-22 09:13
因为SQL没有记录号的概念,也就是没有前后次序的概念。所以要确定记录的前后次序就依赖数据本身。
比如这个数据,如果ID的大小就是次序的依据,那么就可以一试。
select [id],[datetime],cast([datetime]-(select isnull([datetime],0) from [表1] b
where b.[id]=(select max([id]) from [表1] where [id]from [表1] a
结果中的Range单位为分钟。
可将结果Insert到一个临时表中,再用临时表的Range字段按ID来Update 表1.
比如这个数据,如果ID的大小就是次序的依据,那么就可以一试。
select [id],[datetime],cast([datetime]-(select isnull([datetime],0) from [表1] b
where b.[id]=(select max([id]) from [表1] where [id]from [表1] a
结果中的Range单位为分钟。
可将结果Insert到一个临时表中,再用临时表的Range字段按ID来Update 表1.
- 4楼网友:何以畏孤独
- 2021-03-22 08:24
先插入一个临时表里面,然后循环
- 5楼网友:撞了怀
- 2021-03-22 07:20
sql server里需要通过游标取出每条记录进行比较后把结果存储回去
oracle应该可以通过分析函数进行
oracle应该可以通过分析函数进行
- 6楼网友:西岸风
- 2021-03-22 06:01
前面的答案有点问题,修改了一下,调试通过!
SELECt ID,DATETIME,RANGE=A.DATETIME-
(SELECT B.DATETIME FROM TABLENAME B WHERe B.ID=(SELECt MID=MAX(C.ID) FROM TABLENAME C WHERe C.IDFROM TABLENAME A
--逻辑乱了一点,解释一下:
别名A:是原表。
别名B:求出了原表中上一个时间(通过上一个ID求出了上一个时间)
别名C:求出了原表中上一个ID
SELECt ID,DATETIME,RANGE=A.DATETIME-
(SELECT B.DATETIME FROM TABLENAME B WHERe B.ID=(SELECt MID=MAX(C.ID) FROM TABLENAME C WHERe C.IDFROM TABLENAME A
--逻辑乱了一点,解释一下:
别名A:是原表。
别名B:求出了原表中上一个时间(通过上一个ID求出了上一个时间)
别名C:求出了原表中上一个ID
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯