我需要将年度表中的数据合并到一个大表中。我对应该如何使用动态 SQL(或其他)感到困惑。
所有这些都在 MonetDB 中,我认为它遵循 SQL 2008 标准。我不确定它们是否支持分区,无论如何我宁愿合并我的表。
The Curse and Blessings of Dynamic SQLSELECT * FROM sales + @yymm
中的讨论最后没有提到解决方案。
我从 MonetDB 专家那里收到了一些关于相关文章的指导,在他对 DBA 的回答下方的评论中,但多年来没有循环,我仍然需要。
想想我的数据有这样的表格CIVIL_1969
,CIVIL_1970
......。CIVIL_2012
这些通常遵循相同的模式,但没有year
列。我想要一个CIVIL
表,还有一个year
列。
顺便说一句,有些表的架构每年都会发生变化(例如,不同年份的税表收集了不同的记录)。是否也可以合并这些表?当然,有些列的记录很少,丢失了很多年。
一些非常试探性的伪代码:
USE dbfarm
DECLARE @i INT
SET @i = 1990
SELECT name FROM tables WHERE name LIKE 'data_@i';
WHILE @i < 2013
DO
ALTER TABLE data_@i ADD COLUMN "year" INTEGER; UPDATE data_@i SET "year" = @i;
SET @i = @i +1
END WHILE
CREATE TABLE data AS SELECT * FROM data_1990 UNION ALL SELECT * FROM data_1991 UNION ALL [...] WITH DATA;