我是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
...
一遍又一遍地重复这一次,只是改变月份。 有没有办法减少这个?
答案 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
如果您没有将每个月的数据放入单独的表中,但这可能超出您的控制范围,那会更简单。
祝你好运。