Você pode usar esse lote de consulta para criar a exibição. Mas você precisa continuar atualizando-o.
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);
Este é um proc armazenado que recebe o nome da tabela base e cria uma visualização para ele (envolvi o código acima em um proc que recebe um parâmetro)
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