2015-06-05 87 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 

这将是简单的,如果你没有把每个月的数据到一个单独的表,但可能是你无法控制的。

祝你好运。