-1 sql-server union stored-procedures multiple-tables
我有带有名称的表:
DeviceLogs_1_2023
DeviceLogs_2_2023
Run Code Online (Sandbox Code Playgroud)
每个月都会在数据库中添加新表。
如何创建一个过程将多个表中的数据合并到一个表或视图中?
select * from DeviceLogs_7_2022
union all
select * from DeviceLogs_8_2022
Run Code Online (Sandbox Code Playgroud)
任何解决方案都依赖于架构保持稳定(通常您不想*在视图中使用,因为如果添加/删除/重命名列,会发生有趣的事情)。此特定解决方案假设您使用的是 SQL Server 2017 或更高版本(或 Azure SQL Edge/Azure SQL 数据库/托管实例)。您应该始终使用您需要支持的最低版本来标记问题。
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |