我们有一个数据库,每个月都会为交易创建一个新表。因此,存在诸如TRANS201811
,TRANS201812
,TRANS201901
等表格。我需要一个视图,该视图在视图中显示所有这些事务。下面是我编写的动态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)
答案 0 :(得分:0)
您可以创建一个显示所有视图的简单视图:
CREATE VIEW AS transactionViews
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND [TABLE_NAME] LIKE 'TRANS20%'