如何通过写sql存储过程计算第一个的结束时间和第二个的开始时间(数据量很大)
在时间表里通过存储过程实现第一个的结束时间和第二个的开始时间,不是第一条数据的开始和结束时间。是第一个和第二个之间差。满意悬赏500...
在时间表里通过存储过程实现第一个的结束时间和第二个的开始时间,不是第一条数据的开始和结束时间。是第一个和第二个之间差。满意悬赏500
展开
4个回答
2013-08-13
展开全部
先做个不受那么多限制的,这个ID不用是必须步长为1的可以中间有缺少的。呵呵是这个意思吗?
select *,DATEDIFF(day,结束时间,下条的开始时间) as 时间差 from
(select *
,(select top 1 开始时间 from test z where z.ID>a.ID order by ID) as 下条的开始时间
from test a
)b
select *,DATEDIFF(day,结束时间,下条的开始时间) as 时间差 from
(select *
,(select top 1 开始时间 from test z where z.ID>a.ID order by ID) as 下条的开始时间
from test a
)b
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-13
展开全部
sql源码如下:(虽然功能已经实现,但是有一个弊端,就是id必须是一组等差数列,并且步长必须为1)
select id,starttime as '开始时间',endtime as '结束时间' from test;
select t.id,t.endtime as '第n行结束时间',t1.starttime as '第n+1行开始时间',DATEDIFF(day,t.endtime,t1.starttime) as '时间差'from test t inner join
(select * from test where id not in (select top 1 id from test)) t1
on t1.id-1=t.id
结果显示如图:
select id,starttime as '开始时间',endtime as '结束时间' from test;
select t.id,t.endtime as '第n行结束时间',t1.starttime as '第n+1行开始时间',DATEDIFF(day,t.endtime,t1.starttime) as '时间差'from test t inner join
(select * from test where id not in (select top 1 id from test)) t1
on t1.id-1=t.id
结果显示如图:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要学会问问题,你说的不是很清楚,让别人无法回答,可能问题只有你自己清楚,你能举个例子说明一下你的问题吗?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-13
展开全部
把时间表的表结构放上来看看嘛!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询