2010-12-02 2 views
1

Я хочу получить определенный набор результатов из таблицы в одном запросе, и я не могу найти, как это сделать.Как получить для каждого отдельного вхождения первичного ключа в таблицу, первый из упорядоченного набора строк?

У меня есть таблица записи каждого изменения состояния агента (онлайн, оффлайн, прочь и т. Д.) И время, когда это произошло.

Я хочу, чтобы получить для каждого идентификатора агента последнего изменения состояния, т.е. с учетом агентов A и B, я бы исходную таблицу, содержащую:

ID | ГОСУДАРСТВО | DATETIME

A | Интернет | 29-11-2010

A | Не в сети | 30-11-2010

B | В гостях | 28-11-2010

B | Интернет | 30.11.2010

И я хотел бы, чтобы генерировать выходной сигнал следующим образом:

ID | ГОСУДАРСТВО | DATETIME

A | Не в сети | 30-11-2010

B | Интернет | 30-11-2010

Я понимаю, что это может быть действительно простой запрос выбора, но я не могу сказать, что это такое. Также безумные реквизита, если это может быть INFORMIX совместимый: D

ответ

2

Как насчет:

SELECT datetime, id, state FROM table t1 
WHERE t1.datetime = (SELECT MAX(t2.datetime) FROM table t2 WHERE t2.id=t1.id) 
+0

Именно то, что я собирался ответить. @LostKaleb: В другой заметке я бы предложил избегать ключевых слов в качестве имен столбцов. У меня болят глаза :) – fancyPants 2010-12-02 12:00:07

Смежные вопросы