SQL Server 存储过程动态合并多个表中的数据

问题描述 投票:0回答:2

我有一张写有名字的桌子 DeviceLogs_1_2023 DeviceLogs_2_2023

每月都会在数据库中添加新表。 我如何创建一个过程将多个表中的数据合并到一个表或视图中

从 DeviceLogs_7_2022 选择 * 联合所有 从DeviceLogs_8_2022中选择*

sql-server stored-procedures union multiple-tables
2个回答
0
投票

Trad sql 不会这样做。构建字符串然后执行该字符串的动态 sql 将解决这个问题。


0
投票

这依赖于模式保持稳定(通常您不想在视图中使用

*
,因为如果您添加/删除/重命名列,会发生有趣的事情)。

DECLARE @sql nvarchar(max);

SELECT @sql = STRING_AGG(CONVERT(nvarchar(max), 
  CONCAT(N'  SELECT * FROM dbo.', QUOTENAME(name))), N'
  UNION ALL
')
FROM sys.tables
WHERE name LIKE N'DeviceLogs_[0-9]%';

SET @sql = N'CREATE OR ALTER VIEW dbo.SomeViewName
AS
' + @sql;

PRINT @sql;
--EXEC sys.sp_executesql @sql;
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.