解决方案 »
- MySQL5.1安装完后启动问题。
- 请问如何在创建的视图中声明变量
- 各位,救命啊!!
- 全文索引和普通索引一起作为查询条件的效率问题
- 一个存储过程里怎样调用另一个存储过程的结果啊?谢谢
- sql server 主从表插入 存储过程中事务的使用?
- ===求教一个关于数据库执行速度的问题===
- 通过ADO调用存储过程返回的字符型出参是不是有2048个字节的大小限制?求高人解答
- sql server中数据类型的长度是以字节为单位吗?
- delete触发器和update触发器代码一样,可以写在一起吗?
- 关于去掉重复数据的问题,求高手解答
- 我用VC++6.0连接SQL2000 连接不上,急求高手解答,以下是代码,请问是哪里错了?求代码纠正。
declare @t table( id int,RecordTime datetime)
insert into @t
select 1,'2013-05-01 8:01' union all
select 2,'2013-05-01 9:30' union all
select 3,'2013-05-01 10:02' union all
select 4,'2013-05-01 11:23';with a as(
select top 100 percent a.id,a.RecordTime,
(select top 1 RecordTime from @t B where id<a.id order by id desc ) RecordTime_p
from @t A
order by id
)
select top 1 RecordTime_p TimeFrom,RecordTime TimeTo,datediff(minute,RecordTime_p,RecordTime) IntMaxTime
from a
order by IntMaxTime desc
WHERE a.id=b.id-1
ORDER BY df DESC 这样可以吗?恐怕你的id不连续
--> 测试数据:#tb
IF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tb
GO
CREATE TABLE #tb([id] INT,[RecordTime] DATETIME)
INSERT #tb
SELECT 1,'2013-05-01 8:01' UNION ALL
SELECT 3,'2013-05-01 9:30' UNION ALL
SELECT 5,'2013-05-01 10:02' UNION ALL
SELECT 9,'2013-05-01 11:23'
--------------开始查询--------------------------
;WITH cte AS
(
SELECT *,row_id=ROW_NUMBER() OVER(ORDER BY [id]) FROM #tb
)
SELECT TOP 1 a.*,DATEDIFF(mi,a.[RecordTime],b.[RecordTime]) AS df FROM cte a, cte b
WHERE a.row_id=b.row_id-1
ORDER BY df DESC
----------------结果----------------------------
/*
id RecordTime row_id df
1 2013-05-01 08:01:00.000 1 89
*/
生成一个id出来。
看到你3楼的回复,我知道可以用recordTime来做ID了。
declare @t table
(
id int,
RecordTime datetime
)
insert into @t
select 1,'2013-05-01 8:01' union all
select 2,'2013-05-01 9:30' union all
select 3,'2013-05-01 10:02' union all
select 4,'2013-05-01 11:23'
select top 1 a.RecordTime as TimeFrom,b.RecordTime as TimeTo,
datediff(minute,a.RecordTime,b.RecordTime)maxtime
from @t a,@t b where a.id+1 = b.id
order by datediff(minute,a.RecordTime,b.RecordTime) desc
1:从一个表读取几个记录,记录包含一个已经定义好的时间段A-B。
如:8:00-9:00 12:00-13:00 17:00-18:00
2:再根据这些时间段A-B找出一个人相关的记录集(也就是上面的RecordTime )
如找出8:00-9:00出现的记录集
3:再处理这些记录集分析最大相隔时间长度,更新到另外一个表里面。
想用一个存储过程,比较难。大家帮忙一下,存储过程的主要结构!
谢谢!