创建具有多个表的动态视图

时间:2019-01-10 16:07:57

标签: sql sql-server tsql

我们有一个数据库,每个月都会为交易创建一个新表。因此,存在诸如TRANS201811TRANS201812TRANS201901等表格。我需要一个视图,该视图在视图中显示所有这些事务。下面是我编写的动态SQL,可以完成我想做的事情。但是,我试图查看是否有更有效的方式编写此代码。谢谢!

declare @sql as varchar(max) = (
            SELECT ltrim(stuff((
            SELECT ' UNION SELECT ACCOUNT, AMOUNT, GL_FROM, GL_TO, INIT_ACCNT, LOGGED, TRAN_WHEN FROM ' + cast(t.table_schema + '.' + t.table_name AS VARCHAR(max)) + ' '
            FROM INFORMATION_SCHEMA.TABLES t
            WHERE TABLE_SCHEMA = 'softwareadmin'
                            AND (TABLE_NAME LIKE 'TRANS20%')
            FOR XML PATH, TYPE).value(N'.[1]', N'nvarchar(max)'), 1, 6, N'')))

exec(@sql)

1 个答案:

答案 0 :(得分:0)

您可以创建一个显示所有视图的简单视图:

CREATE VIEW AS transactionViews
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND [TABLE_NAME] LIKE 'TRANS20%'