I have a large number of tables (some thousands) containing similar data. I would like to run some reports from these. The table names are similar, so I can get a list of table
You can do this with Dynamic SQL
Declare @SQL varchar(max) =''
Select @SQL = @SQL +'Union All Select * From '+Table_Name+' '
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'TableNamePrefix%'
ORDER BY TABLE_NAME
Set @SQL = Stuff(@SQL,1,10,'')
Exec(@SQL)
select 'select * from '+TABLE_NAME +' union all'
FROM
INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%chd%'
ORDER BY TABLE_NAME
remove last union all
All these tables have the same data types and number of columns, because if this not the case then you will not be able to use UNION sentences, however, it's very strange to merge all the information in this way, could you put some examples to clarify it.
using your pattern on table name - i got somewhere with
DECLARE @SQL nvarchar(max);
select @SQL = COALESCE(@SQL , '') + 'SELECT * FROM [' + TABLE_NAME + '] UNION ALL '
FROM INFORMATION_SCHEMA.TABLES where TABLE_NAME LIKE '%employeedet%';
SELECT @SQL = LEFT(@SQL, LEN(@SQL) - 11);
print @SQL;