SELECT DISTINCT T.TABLE_NAMEFROM INFORMATION_SCHEMA.TABLES AS TJOIN INFORMATION_SCHEMA.COLUMNS AS C ON C.TABLE_NAME = T.TABLE_NAMEWHERE C.COLUMN_NAME IN ( 'Start_Time' , 'End_Time', 'Record_Type', 'User_Action')
DECLARE @SQL VARCHAR(MAX)SET @SQL = '';;WITH AgentTables AS ( SELECT DISTINCT T.TABLE_NAME FROM INFORMATION_SCHEMA.TABLES AS T JOIN INFORMATION_SCHEMA.COLUMNS AS C ON C.TABLE_NAME = T.TABLE_NAME WHERE C.COLUMN_NAME IN ( 'Start_Time' , 'End_Time', 'Record_Type', 'User_Action')), NumberedTables AS ( SELECT TABLE_NAME, ROW_NUMBER() OVER (ORDER BY TABLE_NAME) AS RowNum FROM AgentTables ) SELECT @SQL = @SQL + ' SELECT ''' + TABLE_NAME +''' AS AgentName, [Start_Time], [End_Time], [Record_Type] FROM ' + TABLE_NAME +CASE WHEN RowNum = (SELECT COUNT(*) FROM NumberedTables) THEN ''ELSE ' UNION ALL 'END FROM NumberedTablesORDER BY TABLE_NAME-- PRINT @SQL;EXEC (@SQL);