使用sql从多个具有相同列名和结构的表中选择数据[关闭]

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

我从第三方数据库获取数据以生成某些报告。问题在于,它会继续每月生成一个新表,以通过以下方式在同一列中插入相同记录:

For December table : Data_12_2019
For January table  : Data_1_2020
For February table : Data_2_2020
For March table    : Data_3_2020 and so on

我想将数据放置在上面的表中,将来也将生成这些表。我正在寻求有关如何做的帮助。

sql-server stored-procedures sql-function
1个回答
0
投票

您可以使用动态查询来做到这一点。如果您的表结构相同,则可以尝试如下操作。

DECLARE @query AS NVARCHAR(max) = Stuff((SELECT DISTINCT ' ' + 'SELECT * FROM ' + Quotename(name) + ' UNION' 
                 FROM   
                 (
                  SELECT 
                    [name]
                FROM
                    sys.sysobjects
                WHERE
                    [xtype] = 'U'
                    and NAME LIKE 'Data_[0-9][0-9]_[0-9][0-9][0-9][0-9]'
                 )t
                 FOR xml path(''), type).value('.', 'NVARCHAR(MAX)'), 1, 1, ''); 

SET @query= substring(@query,0,len(@query)-5)
exec(@query)
© www.soinside.com 2019 - 2024. All rights reserved.