SQL 查询出来的两种结果相减
selectname,activity,date,locationfromhistorytablewherenamein(......)andactivityin(mov...
select name,activity,date,location
from historytable
where name in (......)
and activity in(move,jump)
and date = sysdate -2
and location = (playground,classroom)
得到结果大概是如下 我现在要把同一location里的第一次move和最后一次jump的时间相减 得到我要的一个差值 在SQL里怎么做呢 。。。。
NAME LOCATION ACTIVITY DATE
小明 教室 move 3/24/2012 4:23:37 AM
小明 操场 jump 3/24/2012 5:29:05 AM
小k 教室 move 3/25/2012 2:49:23 PM
小k 操场 jump 3/25/2012 2:50:16 PM
小k 教室 jump 3/25/2012 3:01:11 PM
小k 操场 jump 3/25/2012 3:02:04 PM
小k 教室 jump 3/26/2012 5:58:47 PM
小k 教室 move 3/26/2012 6:11:14 PM
小k 教室 move 3/26/2012 7:28:35 PM
小k 教室 jump 3/26/2012 7:30:19 PM 展开
from historytable
where name in (......)
and activity in(move,jump)
and date = sysdate -2
and location = (playground,classroom)
得到结果大概是如下 我现在要把同一location里的第一次move和最后一次jump的时间相减 得到我要的一个差值 在SQL里怎么做呢 。。。。
NAME LOCATION ACTIVITY DATE
小明 教室 move 3/24/2012 4:23:37 AM
小明 操场 jump 3/24/2012 5:29:05 AM
小k 教室 move 3/25/2012 2:49:23 PM
小k 操场 jump 3/25/2012 2:50:16 PM
小k 教室 jump 3/25/2012 3:01:11 PM
小k 操场 jump 3/25/2012 3:02:04 PM
小k 教室 jump 3/26/2012 5:58:47 PM
小k 教室 move 3/26/2012 6:11:14 PM
小k 教室 move 3/26/2012 7:28:35 PM
小k 教室 jump 3/26/2012 7:30:19 PM 展开
2个回答
展开全部
大概是这个样子:
select max(jumpdate )-min(movedate ) from
(select name,location,min(date) as movedate from historytable where ACTIVITY='move' group by name,location ) v1
left join
(select name,location,min(date) as jumpdate from historytable where ACTIVITY='jump' group by name,location) v2
on v1.name =v2.name and v1.location = v2.location
其中日期的减法还有其他的问题(例如可能没有相应的记录),你自己再弄吧
select max(jumpdate )-min(movedate ) from
(select name,location,min(date) as movedate from historytable where ACTIVITY='move' group by name,location ) v1
left join
(select name,location,min(date) as jumpdate from historytable where ACTIVITY='jump' group by name,location) v2
on v1.name =v2.name and v1.location = v2.location
其中日期的减法还有其他的问题(例如可能没有相应的记录),你自己再弄吧
展开全部
--下面这段是SQL Server的写法, 可以计算出两个时间中间间隔多少分钟
--事实上datediff还可以计算两个时间间隔多少天, 月, 年...你可以百度一下
select name, location, datediff(n, min(case when activity = 'move' then date end), max(case when activity = 'jump' then date end)) d
from historytable
group by name,location
--事实上datediff还可以计算两个时间间隔多少天, 月, 年...你可以百度一下
select name, location, datediff(n, min(case when activity = 'move' then date end), max(case when activity = 'jump' then date end)) d
from historytable
group by name,location
追问
我是oracle哈。。。貌似不行
追答
那段Case When可能不支持, 可以改成楼上那位的写法
但datediff这个函数应该也有, 你可以查查看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询