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
展开
 我来答
iambise
2012-03-27 · TA获得超过714个赞
知道小有建树答主
回答量:834
采纳率:50%
帮助的人:504万
展开全部
大概是这个样子:
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
其中日期的减法还有其他的问题(例如可能没有相应的记录),你自己再弄吧
hyc_music
2012-03-27 · TA获得超过161个赞
知道答主
回答量:212
采纳率:100%
帮助的人:208万
展开全部
--下面这段是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
追问
我是oracle哈。。。貌似不行
追答
那段Case When可能不支持, 可以改成楼上那位的写法
但datediff这个函数应该也有, 你可以查查看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式