注册 登录
编程论坛 Oracle论坛

如何改写一段 SQL 语句。使其更好用

starsn 发布于 2011-06-01 18:09, 1079 次点击
问题如图:
只有本站会员才能查看附件,请 登录


[ 本帖最后由 starsn 于 2011-6-1 18:31 编辑 ]
3 回复
#2
makebest2011-06-01 19:26
要实现你的要求, 其实就是要"无中生有"一些数据, 这是不可能的
要实现有两种方法,
一是建一个表把24个钟点都放进去,然后按钟点左连接上面的表.
二是用存储过程, 把上面的表查出来放到临时表, 遍历一下补上缺的行.
#3
jame9002011-06-02 10:42
如果只是简单的想让他显示出7点的时候为0而不是加判断这个值是否存在,然后再显示的话,可以用union语句来做:
select * from
(select start_time,count(*) from pm_an21_sectorpacketservmeas
where subnet_id=9002
and start_time>=to_date('2011053100',yyyymmddhh24)
and stop_time<=to_date('2011053100',yyyymmddhh24)
union all
select '2011-5-31 7:00:00',0 from dual) order by start_time ;
但是如果要加上判断是否存在7点钟这个条件的话,建议用存储过程来判断,如果用sql语句来判断会显得很复杂繁琐,你得新增加一行数据,逻辑麻烦,写过程,然后以数据表的形式输出就显得简单得多!
#4
amwihdyt20112011-06-29 03:24
學習了
1