日期:2014-05-18  浏览次数:20773 次

sql语句:如何统计1月至5月每时段的发案数量,每时段是指将24小时分割位12段
也就是说,0-2,2-4,……,22-24
我的是这样写的,

select   count(*)   from   case_info   where   to_date(to_char( ' "+txtStartDate+ " ', 'yyyy-MM-dd   HH24:mi '), 'hh24mi ')   > = '0000 '     and     to_date(to_char( ' "+txtEndDate+ ', 'yyyy-MM-dd   HH24:mi '), 'hh24mi ') <= '0020 '  

txtStartDate= "2007-01-01   00:00:00 "
txtEndDate= "2007-05-51   00:00:00 "

这是统计凌晨0-2点,这样不行,请大家帮忙看看改怎么写

------解决方案--------------------
建议修改数据库表,添加日期字段casedate存放日期(格式如:2007-05-05)、所属时间段sjd(分1,2,3,..,12,可不用客户填写,系统自动根据系统时间所属时间段自动生成,或者根据系统时间默认一个,然后客户可以修改。)
sql语句
select casedate,sjd,count(*) from case_info group by casedate,sjd就出来了。
------解决方案--------------------
sum(case when end)的意思是求和 当满足某条件时..当满足另一条件时 一般要伴随group by使用
------解决方案--------------------
看到这样的库我就想哭.

用子查询试试吧,先查出所有含有0点到2点的记录,父查询再在这个结果集里根据日期去查.
懒得去细写了,太麻烦.