日期:2014-05-17  浏览次数:21127 次

这个SQL语句该如何实现?
正在做一个报表统计问题,数据库为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条左右,现在需要做月报表,
请教如何将每天的最后一条取出?


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

------解决方案--------------------
Select * from 表 a where not exists
(select * from 表 where to_char(日期, 'yyyy-mm-dd ')=to_char(a.日期, 'yyyy-mm-dd ')
and 日期> a.日期)
------解决方案--------------------
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_)