正在做一个报表统计问题,数据库为Oracle9,
数据格式为    日期      数据1 数据2 数据3 部门
2007-1-1 10:00  xxx  xxx  xxx   A
2007-1-1 10:20  xxx  xxx  xxx   B
2007-1-1 10:40  xxx  xxx  xxx   C
2007-1-1 11:00  xxx  xxx  xxx   D
2007-1-1 11:20  xxx  xxx  xxx   A
2007-1-1 11:40  xxx  xxx  xxx   A
2007-1-1 12:00  xxx  xxx  xxx   A
2007-1-1 12:20  xxx  xxx  xxx   A
2007-1-1 12:40  xxx  xxx  xxx   A
             . 
             .
             .
2007-1-2 9:00  xxx  xxx  xxx   A
2007-1-2 10:00  xxx  xxx  xxx   A
2007-1-2 10:20  xxx  xxx  xxx   A
2007-1-2 10:40  xxx  xxx  xxx   A
             . 
             .
             .
2007-1-3 10:00  xxx  xxx  xxx   A
2007-1-3 10:20  xxx  xxx  xxx   A
2007-1-3 10:40  xxx  xxx  xxx   A
其中每天数据量为250条左右,现在需要做月报表,
请教如何将每天的最后一条取出?

解决方案 »

  1.   

    select top 1
    from table1
    where time >=每天统计的开始时间 and time <=每天统计的结束时间
    order by 统计时间 desc;
    将查询结果按统计时间的降序排列,第一条记录就是每天统计的最后一条记录.
      

  2.   

    Select * from 表 a where not exists
    (select * from 表 where to_char(日期,'yyyy-mm-dd')=to_char(a.日期,'yyyy-mm-dd')
                             and 日期>a.日期)
      

  3.   

    SELECT *
      FROM tabname a
     WHERE EXISTS (SELECT 1
                     FROM (SELECT   MAX (date_) date_
                               FROM tabname
                           GROUP BY TO_CHAR (date_, 'yyyymmdd')) taba
                    WHERE a.date_ = taba.date_)
      

  4.   

    或者
    SELECT a.*
      FROM tabname a JOIN (SELECT   MAX (date_) date_
                               FROM tabname
                           GROUP BY TO_CHAR (date_, 'yyyymmdd')) taba ON a.date_ =
                                                                           taba.date_
      

  5.   

    to perlxs(Bug):这个语句我也写过,可是只能是1天里的最后一条数据,
    偶希望是能够把当月每天最后一天都搜索出来。to WangZWang(先来):没看明白,帮忙解释一下
      

  6.   

    在一天中 to_char(日期,'yyyymmdd')=to_char(a.日期,'yyyymmdd')
    且不存在一个日期>a.日期
      

  7.   

    to WangZWang(先来),hevin(没有什么是不可能的) :
    非常感谢,测试已经成功,散分