欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

求教一个sql语句关于min,max函数查询的有关问题

更新时间: 2014-01-05 02:14:38 责任编辑: Author_N1

 

求教一个sql语句关于min,max函数查询的问题
我写了一句这sql语句:
select stu.name,
       min(att.checktime),
       max(att.checktime) 
from student stu,
     attendance att
where
     att.stu_obid=stu.id
group by s.id



attendance表里面有一个字段是type,记录的是“进校”,“离校”状态,我该怎么写才能让min函数选择的考勤时间是以“进校”这个状态为条件选择,max函数以“离校”状态为条件选择?谢谢~
--参考方法--
最笨的办法:

with ax as(
select stu.name name,
       att.checktime checktime,
       att.type type
from student stu,
     attendance att
where
     att.stu_obid=stu.id
group by stu.name,att.checktime,att.type
)
select name,min(checktime),0 from ax where type='进校'
union 
select name,0,max(checktime) from ax where type='离校'


--参考方法--
min(att.checktime), max(att.checktime) 

改为 

min(decode(att.type,'进校',att.checktime,null)), 
max(decode(att.type,'离校',att.checktime,null)) 
--参考方法--
引用:
Quote: 引用:


min(decode(att.type,'进校',att.checktime,null)), 
max(decode(att.type,'离校',att.checktime,null)) 



我能想 在min中先根据条件“进校”拿到分组,然后再从这个分组获取最小那个,不知道行不行呢?


上面那个不是可以满足么



with attendance as
(
     select 1 id,11 stu_obid,'2013-9-1 08:12:13' checktime,'进校' type from dual union all
     select 2 id,11 stu_obid,'2013-9-1 12:30:13' checktime,'离校' type from dual union all
     select 3 id,11 stu_obid,'2013-9-1 14:30:13' checktime,'进校' type from dual union all
     select 4 id,11 stu_obid,'2013-9-1 15:30:31' checktime,'离校' type from dual l
)

select stu_obid,
       min(decode(type,'进校',checktime)) m_time,
       max(decode(type,'离校',checktime)) n_time
from attendance
group by stu_obid

    stu_obid       m_time      n_time 
---------------------------
1 11 2013-9-1 08:12:13 2013-9-1 15:30:31

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:14:38
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7452/
本文WWW.DOC100.NET DOC100.NET版权所有。