2015-06-05 92 views
2

我是新來的SQL,我只是做了一堆選擇聯合在一起。我想知道是否有更好的方法在少量代碼中完成。SQL,減少重複公式的數量?

我目前做:

select 
    to_date('201501','YYYYMM') table_version, 
    month 
    sum() 
    sum() 
from file_name01 
group by to_date('201501','YYYYMM'), month 
union all  
select 
    to_date('201502','YYYYMM') table_version, 
    month 
    sum() 
    sum() 
from file_name02 
group by to_date('201502','YYYYMM'), month 
union all 
... 

這是重複了一堆時間一遍一遍,只是改變了一個月。 有沒有辦法減少這種情況?

+2

您正在使用哪個RDBMS /數據庫後端? –

+0

它似乎是甲骨文與'to_date' –

+0

對不起,我忘了添加!甲骨文 – sourcherry

回答

2

你可以使用一個CTE來把它簡化一下:

WITH ccc AS (select to_date('201501','YYYYMM') table_version, month, xxx, yyy FROM file_name01 
    union all select to_date('201502','YYYYMM') table_version, month, xxx, yyy from file_name02 
    union all select to_date('201503','YYYYMM') table_version, month, xxx, yyy from file_name03 
     ...etc...) 
SELECT TABLE_VERSION, 
     MONTH, 
     SUM(xxx), 
     SUM(yyy) 
    FROM ccc 
    GROUP BY TABLE_VERSION, MONTH 
    ORDER BY TABLE_VERSION, MONTH 

這將是簡單的,如果你沒有把每個月的數據到一個單獨的表,但可能是你無法控制的。

祝你好運。