1

我正在尝试从 oracle 开发人员那里获得结果。我需要加入 3 个带日期的表,输出应该是:

Date        sum    count   num
2012-10-01  5000   30      15
2012-10-02  0      0       0
2012-10-03  60     150     350
2012-10-04  20     200     300
2012-10-05  1000   100     200
2012-10-06  1500   109     400

输入范围在 2012-10-01 和 2012-10-06 之间。如果找不到数据,则在所有其他列中将日期设为 0

提前致谢。

4

1 回答 1

1

您应该生成所有日期,然后在日期上加入表格。

类似的东西(我用了两张桌子):

select date_col, nvl(sum(t1.val),0) + nvl(sum(t2.val,0)) as sum
from 
  (select to_date('01-OCT-2012','dd-mon-yyyy') + level - 1 as date_col
   from dual connect by level <= to_date('06-OCT-2099','dd-mon-yyyy') - to_date('01-OCT-2012','dd-mon-yyyy') + 1
   ) d
left join table1 t1 on (t1.date_column = d.date_col)
left join table2 t2 on (some_t1_t2_join_condition and t2.date_column = d.date_col);
于 2012-10-10T12:15:36.013 回答