在SQL(SSMS)中动态追加新表的视图

问题描述 投票:0回答:1

我有一个已创建表的历史记录,并将每月创建。它们看起来像mytable_201501mytable_201502等,直到mytable,这是时间上的最后一个表。因此,由于我们在5月,mytable将在6月变为mytable_202004,而新的mytable将具有5月的数据。不知道这种设置是否有用。

现在,我需要创建一个视图,它将所有这些查询附加到一个视图中。

我当前的代码很简单

CREATE VIEW
SELECT * FROM mytable_201501 
UNION ALL
SELECT * FROM mytable_201502 
...
UNION ALL
SELECT * FROM mytable 

这会占用大量空间,并且每个月都必须进行更新。我正在寻找一种方法来自动执行此操作(如果SQL中有一个)。

sql sql-server loops view append
1个回答
0
投票

您可以通过查询sys.tables来生成视图定义,如下所示:

declare @sql nvarchar(max) = 
(
    select '
    create or alter view v_mytable
    as
    '+ STRING_AGG( 'select * from ' + quotename(name) ,'
    union all 
    ')
    from sys.tables
    where name like 'mytable%'
)
print @sql 

--exec (@sql)
© www.soinside.com 2019 - 2024. All rights reserved.