2012-10-10 53 views
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月6日之間。 如果找不到數據,則在其他所有列中都加上0的日期。

感謝高級。

+0

@Nicholas克拉斯諾夫2日,開始和結束 – Ofer

回答

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); 
+0

和我怎樣才能添加結束日期,而不是由多少? – Ofer

+0

這很簡單,我編輯了這個問題。你寫了end_date-start_date。差異在幾天內。 –