Recuperando o último registro em cada grupo do banco de dados - SQL Server 2005/2008

Eu fiz algumas pesquisas por não conseguir os resultados que estou procurando. Basicamente, temos quatro sistemas de gerenciamento diferentes em toda a empresa e estou no processo de combinar todos os dados de cada sistema regularmente. Meu objetivo é atualizar os dados a cada hora em um banco de dados central. Aqui está um conjunto de dados de amostra com o qual estou trabalhando:

COMPUTERNAME | SERIALNUMBER | USERNAME | LASTIP | LASTUPDATE | SOURCE
TEST1 | 1111 | BOB | 1.1.1.1 | 1/17/2011 01:00:00 | MGMT_SYSTEM_1
TEST1 | 1111 | BOB | 1.1.1.1 | 1/18/2011 01:00:00 | MGMT_SYSTEM_2
TEST1 | 1111 | PETER | 1.1.1.11 | 1/19/2011 01:00:00 | MGMT_SYSTEM_3
TEST2 | 2222 | GEORGE | 1.1.1.2 | 1/17/2011 01:00:00 | MGMT_SYSTEM_1
TEST3 | 3333 | TOM | 1.1.1.3 | 1/19/2011 01:00:00 | MGMT_SYSTEM_2
TEST4 | 4444 | MIKE   | 1.1.1.4 | 1/17/2011 01:00:00 | MGMT_SYSTEM_1
TEST4 | 4444 | MIKE   | 1.1.1.41 | 1/19/2011 01:00:00 | MGMT_SYSTEM_3
TEST5 | 5555 | SUSIE  | 1.1.1.5 | 1/19/2011 01:00:00 | MGMT_SYSTEM_1

Portanto, quero consultar esta tabela mestre e recuperar apenas o registro mais recente (baseado em LASTUPDATE) para obter as informações mais recentes sobre esse sistema. O problema é que um sistema pode estar em cada banco de dados, mas é claro que eles nunca terão o mesmo tempo exato de atualização.

Eu esperaria obter algo assim:

TEST1 | 1111 | PETER | 1.1.1.11 | 1/19/2011 01:00:00 | MGMT_SYSTEM_3
TEST2 | 2222 | GEORGE | 1.1.1.2 | 1/17/2011 01:00:00 | MGMT_SYSTEM_1
TEST3 | 3333 | TOM | 1.1.1.3 | 1/19/2011 01:00:00 | MGMT_SYSTEM_2
TEST4 | 4444 | MIKE   | 1.1.1.41 | 1/19/2011 01:00:00 | MGMT_SYSTEM_3
TEST5 | 5555 | SUSIE  | 1.1.1.5 | 1/19/2011 01:00:00 | MGMT_SYSTEM_1

Eu tentei usar a função MAX, mas com isso só posso recuperar uma coluna. E não posso usar isso em uma subconsulta porque não tenho um campo de ID exclusivo que me daria o último registro atualizado. Um dos sistemas é um banco de dados MySQL e a função MAX no MySQL funcionará da maneira que eu preciso para retornar apenas um registro por GROUP BY, mas não funciona no SQL Server.

Acho que preciso usar o MAX e o LEFT JOIN, mas minhas tentativas até agora falharam.

Sua ajuda seria muito apreciada. Venho vasculhando meu cérebro nas últimas 3-4 horas tentando obter uma consulta de trabalho. Esta tabela mestre está localizada em um servidor SQL Server 2005.

Obrigado!

questionAnswers(2)

yourAnswerToTheQuestion