填充缺少日期的查询结果

时间:2014-12-03 10:09:26

标签: sql oracle

hy,我在结果中有这样的东西

date          amount       amount2
27.11.2014    100           100
28.11.2014    100           100
29.11.2014    100           200
1.12.2014     100           700
2.12.2014     100           100

我今天和2014年11月30日没有任何记录。

我需要找到一种方法来编写那些日子,以获得最终结果,如

date          amount       amount2
27.11.2014    100           100
28.11.2014    100           100
29.11.2014    100           200
30.11.2014    0             0
1.12.2014     100           700
2.12.2014     100           100
3.12.2014     0             0

1 个答案:

答案 0 :(得分:1)

将您的查询加入到包含所有必要日期的虚拟表中。 这样的表格很容易获得:

   with t as (
        select to_date('01.12.2014', 'dd.mm.yyyy') + level -1 date_
        from dual 
        connect by to_date('01.12.2014', 'dd.mm.yyyy') + level -1 <= to_date('05.12.2014', 'dd.mm.yyyy') 
   ) 
 select t.date_,
        nvl(<your_table>.amount1,0) amount1,
        nvl(<your_table>.amount2,0) amount2
 from t left join <your table> yt on yt.date = t.date_

此查询为您提供12月1日至12月5日之间的所有日期,您可以自行修改范围。 希望这有帮助,否则请告诉我。