我有一个表a(运单号不重复,站点和时间可以重复)
    运单号    站点          时间
    11111    北京   2006-1-1 12:23:34
   11112    上海    2006-1-1 13:25:36
   11113    上海    2006-1-1 13:34:54
   11114    天津    2006-1-2 13:25:23
   11115    杭州    2006-1-2 13:25:56
   11116    北京    2006-1-2 13:56:34
     .       .          .
     .       .          .
     .       .          .我现在要一个结果集按站点分组并排序,(时间段的概念是:比如2006-1-1 13:25:36和2006-1-1 13:34:54,都算一个小时以内,我要的时间段是按小时为单位的)
  
   站点    时间段                  运单数量
   北京    2006-1-1 12:00:00      1    2006-1-1 12:00:00代表12点到13点
   北京    2006-1-2 13:00:00      1
   上海   2006-1-1 13:00:00       2
   天津   2006-1-2 13:00:00       1
   杭州   2006-1-2 13:00:00       1
请教这个怎么做?

解决方案 »

  1.   

    with y
    as (select seqno, to_date(date_str || time_str, 'YYYYMMDDHH24:MI:SS') t, value v from x)
    select rownum, z1.*
    from
    (
    select to_char(min(t), 'YYYYMMDD'), to_char(min(t), 'HH24:MI:SS'), sum(v)
    from
    (select seqno - case when (t - lag(t) over (order by seqno)) <= 1/24/60 then 1 else 0 end as s, t, v from y) z
    group by s
    order by 1,2
    ) z1
    老代码类似
      

  2.   

    select
        a.站点,a.时间段,count(a.*) 运单数量
    from
        (select 运单号,站点,to_char(时间,'YYYY-MM-DD HH24')||':00:00'  时间段 from 表a) a
    group by
        a.站点,a.时间段
      

  3.   

    不好意思,之前给你的是SQL Server里的解法。
      

  4.   

    select 站点,trunc(时间,'hh24') ,count(运单号) from 表 group by 站点,trunc(时间,'hh24')
      

  5.   

    libin_ftsafe(子陌红尘) ,太感谢了