当前位置: 代码迷 >> Oracle开发 >> 一个时间段内求和的SQL,在线求解,该如何处理
  详细解决方案

一个时间段内求和的SQL,在线求解,该如何处理

热度:88   发布时间:2016-04-24 06:26:22.0
一个时间段内求和的SQL,在线求解
我想在想把过去一个时间段(比如10天)内的数据一个合计,
id  total   time
1   100    2015/01/01
2   101    2015/01/05
3   83      2015/01/05
4   106    2015/01/08
5   99      2015/01/19
6   190    2015/01/21
7    60      2015/01/22
如果我这样写
  select 
     sum(total) 
     from tt
   where time>= trunc(to_date('2015/01/10 00:00' ,'yyyy/MM/dd HH24:mi:ss') - 10) 
   and time< trunc(to_date('2015/01/10 00:00' ,'yyyy/MM/dd HH24:mi:ss')) 
   group by time
这样写的话,数据就是
100
184
83
但我需要的是不管有没有这一天,都要算上,
100
0
0
0
184
0
0
106
0
0
但是这个SQL语句怎么写呢
------解决思路----------------------
select b.time, sum(total)
  from tt
 right join (select to_date('2015/01/10 00:00', 'yyyy/mm/dd hh24:mi:ss') -
                    rownum + 1 time
               from dual
             connect by level <= 10) b
    on b.time = tt.time
   and tt.time >=
       trunc(to_date('2015/01/10 00:00', 'yyyy/MM/dd HH24:mi:ss') - 10)
   and tt.time <
       trunc(to_date('2015/01/10 00:00', 'yyyy/MM/dd HH24:mi:ss'))
 group by b.time
 order by 1;
  相关解决方案