- 数据**
存在多个格式为dm_ym_file_2022XXXX(日期)的表,开始日期为20220720,结束日期为20221220
dm_ym_file_20220720
dm_ym_file_20220721
……
dm_ym_file_20221220
dm_ym_file_rules存储所有名称。dm_ym_file_rules如下所示:
ID start_date end_date table_names
36 2022-07-20 2022-07-20 dm_ym_file_share_20220720
37 2022-07-21 2022-07-21 dm_ym_file_share_20220721
38 2022-07-22 2022-07-22 dm_ym_file_share_20220722
- 目标**
我想将所有这些表中的一些字段分组到一个表中。
insert into target_table
select a,b,c,sum(d)
from
(
select a,b,c,sum(d)
dm_ym_file_20220720
group by 1,2,3
union all
select a,b,c,sum(d)
dm_ym_file_20220721
group by 1,2,3
union all
……
select a,b,c,sum(d)
dm_ym_file_20221220
group by 1,2,3
) a
group by 1,2,3;
我的代码应该列出所有的表。这很不方便。
1条答案
按热度按时间dgiusagp1#
这里应该使用的模式是首先联合源表,然后在外部聚合一次。
请注意,一个更好的长期解决方案可能是重新审视您的数据库设计。您真的需要具有几乎相同结构的单独表吗?只使用一个表可能更有意义,该表具有对应于年/月日期的附加列。