Я сделал несколько попыток, не могу получить результаты, которые я ищу. В принципе, у нас есть четыре разные системы управления на всей нашей компании, и я постоянно собираю все данные из каждой системы. Моя цель - обновлять данные каждый час в центральной базе данных. Вот пример набора данных, с которым я работаю:
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
Итак, я хочу запросить эту основную таблицу и получить только самую последнюю запись (на основе LASTUPDATE), чтобы получить самую последнюю информацию об этой системе. Проблема в том, что одна система может быть в каждой базе данных, но, конечно, у них никогда не будет одинакового точного времени обновления.
Я бы ожидал получить что-то вроде этого:
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
Я попытался использовать функцию MAX, но с этим могу получить только один столбец. И я не могу использовать это в подзапросе, потому что у меня нет уникального поля ID, которое дало бы мне последнюю обновленную запись. Одна из систем - это база данных MySQL, а функция MAX в MySQL будет работать так, как мне нужно, чтобы возвращать только одну запись в GROUP BY, но она не работает в SQL Server.
Я думаю, мне нужно использовать MAX и LEFT JOIN, но мои попытки до сих пор не удались.
Ваша помощь будет принята с благодарностью. Я пробовал свой мозг последние 3-4 часа, пытаясь получить рабочий запрос. Эта основная таблица находится на сервере SQL Server 2005.
Спасибо!