Sql 2005 получить последнюю запись из группы данных - PullRequest
0 голосов
/ 31 августа 2010

Проблема:

У меня есть набор данных, который отслеживает историю общения между клиентами. Таким образом, каждый клиент имеет свою собственную историю действий (заметки, электронные письма и т. Д.). Мне нужно получить самую последнюю запись из истории активности каждого клиента, где каждая строка является самой последней записью из активности клиента. Таким образом, каждая строка уникальна для идентификатора клиента , и мы можем назвать каждое действие "description" .

У каждого вида деятельности есть дата и какой-то другой жаргоноподобный предмет, тело.

Таблица активности

activityid  |  clientid  |  subject  |  body  |  datemodified

Спасибо!

Ответы [ 4 ]

0 голосов
/ 31 августа 2010

Предполагая, что вы запрашиваете последнюю введенную строку для каждого клиента. Вы можете использовать следующее предложение:

SELECT activityid, clientid, subject, body, datemodified
FROM Activity as ac
WHERE datemodified=(
    SELECT max(datemodified)
    FROM Activity
    WHERE cleintid=ac.clientid
)
0 голосов
/ 31 августа 2010
SELECT ClientId, Body, MAX(DateModified)
  FROM Activity
 GROUP
    BY ClientId, Body;
0 голосов
/ 31 августа 2010

Предполагается, что SQL Server 2005 +

;with cte AS
(
SELECT activityid, clientid, subject, body, datemodified,
ROW_NUMBER() OVER (PARTITION BY clientid ORDER BY datemodified DESC) AS RN
FROM Activity
)
SELECT activityid, clientid, subject, body, datemodified
 FROM cte
 WHERE RN=1
0 голосов
/ 31 августа 2010

Вы не даете нам много, чтобы уйти, но вот выстрел в темноте:

SELECT ClientId, body, MAX(DateModified)
FROM Activity
GROUP BY ClientId, body
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...