Estou usando o SQL Server 2008, temos um banco de dados que contém 150 tabelas. Introduzimos a coluna systimestamp DATETIME em todas as tabelas. Atualizamos esta coluna com o carimbo de data/hora atual sempre que a operação de inserção/atualização é executada na tabela.
Como escrevo uma consulta para obter os 100 registros mais recentes (com base na coluna systimestamp) do banco de dados em um único conjunto de resultados?
Com base nos comentários acima, o que você precisa é algo assim:
Isso agrupará os 100 principais resultados de cada tabela em uma tabela temporária e, em seguida, retornará as 100 principais linhas para você.
EDIT : Com base em mais informações fornecidas nos comentários, foi estabelecido que o campo ID pode realmente ter um nome diferente em cada tabela. O SQL a seguir listará os 100 últimos registros editados em todo o banco de dados, em todas as tabelas, mostrando o valor da chave primária, o nome da tabela e o carimbo do sistema:
Você pode facilmente estender isso para mostrar o nome da coluna da chave primária também.
Sugiro criar uma view com todas as tabelas que unem a coluna systimestamp. Em seguida, aplique sua consulta de seleção a essa ordem de exibição por systimestamp com limite de 100