SQL,减少重复公式的数量?

时间:2015-06-05 16:38:58

标签: sql oracle

我是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
...

一遍又一遍地重复这一次,只是改变月份。 有没有办法减少这个?

1 个答案:

答案 0 :(得分: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

如果您没有将每个月的数据放入单独的表中,但这可能超出您的控制范围,那会更简单。

祝你好运。