首页 新闻 搜索 专区 学院

SQL 根据时间段分组,分成上下午,并求第一次时间,有难度

0
悬赏园豆:50 [已解决问题] 解决于 2012-04-11 17:58

cidx  didx    etime

1   1   2012-03-29 07:37:00.000
1   1   2012-03-29 09:37:00.000
1   2   2012-03-29 12:01:00.000
1   2   2012-03-29 14:25:00.000
2   3   2012-03-29 07:40:00.000
2   3   2012-03-29 09:43:00.000

2   4   2012-03-29 12:04:00.000

2       4   2012-03-29 14:31:00.000
2   4   2012-03-29 20:09:00.000

 

需要显示

cdidx didx  wkTy  etime

1  1  上午      第一次出现时间
1  2  下午
2  3  上午
2  4  下午
3  5  上午
3  6  下午
4  7  上午

如:

1   1   2012-03-29 07:37:00.000
1   1   2012-03-29 09:37:00.000

需要显示第一次07:37

谢谢啦,

select distinct cdidx ,didx ,
case
when etime> cast(left(etime,10)+' 5:00:00' as datetime) and depTime < cast(left(etime,10)+' 12:00:00' as datetime) then '上午'
else '下午' end as wkType
from Bus_Schedul where srid=54
group by cidx ,didx ,etime

这个是我自己写的,无法显示时间

SQL
yht212的主页 yht212 | 初学一级 | 园豆:151
提问于:2012-04-11 15:01
< >
分享
最佳答案
1

表结构,字段类型是什么

收获园豆:50
ChatinCode | 老鸟四级 |园豆:2272 | 2012-04-11 16:33

前两个是int 后一个是日期型

yht212 | 园豆:151 (初学一级) | 2012-04-11 16:38
1 Select cidx, didx, (case when cast(etime+0.5 as int) > cast(etime as int) then '上午' else '下午' end), min(etime)
2 from Bus_Schedul
3 where srid=54
4 group by cidx, didx, (case when cast(etime+0.5 as int) > cast(etime as int) then '上午' else '下午' end)

 

够简单吧!

ChatinCode | 园豆:2272 (老鸟四级) | 2012-04-11 16:49

谢谢啦,非常感谢

yht212 | 园豆:151 (初学一级) | 2012-04-11 17:56

再次感谢

yht212 | 园豆:151 (初学一级) | 2012-04-11 17:58

@yht212: 你好再有个事想请问你一下,如果有其它的列,但是我不想让它group by分组,应该怎么办

yht212 | 园豆:151 (初学一级) | 2012-04-11 18:04

@yht212: 先group by, 再将结果 与 Bus_Schedul join 。

ChatinCode | 园豆:2272 (老鸟四级) | 2012-04-12 08:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册