Ama*_*ndo 1 t-sql sql-server-2008-r2
我的 SQL Server 2008 R2 数据库中有一组表,所有表都具有相同的列。
我需要SELECT和UNION这些桌子。我可以SELECT这样设置我想要的表:
SELECT TABLE_NAME FROM information_schema.tables
where (TABLE_NAME like '%_CH1' or TABLE_NAME like '%_CH0')
and TABLE_NAME not like '%test%'
Run Code Online (Sandbox Code Playgroud)
我现在需要的是SELECT Column1, Column2, Column3从该列表中的第一个人开始,UNION SELECT Column1, Column2, Column3从该列表中的下一个人开始,依此类推。
我怎么做?
动态查询示例;
--CREATE TABLE Utable1 (Col1 INT, Col2 INT, Col3 INT)
--CREATE TABLE Utable2 (Col1 INT, Col2 INT, Col3 INT)
--CREATE TABLE Utable3 (Col1 INT, Col2 INT, Col3 INT)
DECLARE @SelectClause VARCHAR(100) = 'SELECT Col1, Col2, Col3'
,@Query VARCHAR(1000) = ''
SELECT @Query = @Query + @SelectClause + ' FROM ' + TABLE_NAME + ' UNION ALL '
FROM INFORMATION_SCHEMA.TABLES
WHERE (TABLE_NAME LIKE '%_CH1' OR TABLE_NAME LIKE '%_CH0')
AND TABLE_NAME NOT LIKE '%test%'
SELECT @Query = LEFT(@Query, LEN(@Query) - LEN(' UNION ALL '))
EXEC (@Query)
Run Code Online (Sandbox Code Playgroud)