このクエリ バッチを使用して、ビューを作成できます。ただし、更新し続ける必要があります。
declare @v nvarchar(max) =
(
select stuff((
select cast(' union all select * from ' as nvarchar(max)) + quotename(name)
from sys.tables
where name like 'SOME\_TABLE\____\_[0-9][0-9][0-9][0-9][a-Z][a-Z][a-Z]' escape '\'
for xml path('a'), type
).value('.','nvarchar(max)'),1,11,'')
);
set @v = 'CREATE VIEW SOME_TABLE AS ' + @v;
exec (@v);
これは、ベース テーブル名を受け取り、そのビューを作成するストアド プロシージャです (上記のコードを、パラメーターを受け取るプロシージャにラップしました)。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE spCreateUnionedView
@BaseTableName varchar(100)
AS
BEGIN
SET NOCOUNT ON;
declare @v nvarchar(max) =
(
select stuff((
select cast(' union all select * from ' as nvarchar(max)) + quotename(name)
from sys.tables
where name like replace(@BaseTableName, '_', '\_') + '\____\_[0-9][0-9][0-9][0-9][a-Z][a-Z][a-Z]' escape '\'
for xml path('a'), type
).value('.','nvarchar(max)'),1,11,'')
);
declare @s nvarchar(max) = 'DROP VIEW ' + @BaseTableName;
exec (@s);
set @v = 'CREATE VIEW ' + @BaseTableName + ' AS ' + @v;
exec (@v);
END
GO