Проблема с предложением Group BY - PullRequest
0 голосов
/ 12 ноября 2010

Привет, ребята

У меня есть таблица, подобная приведенной ниже

SurveyID(uniqueidentifier) PKey,UserID(uniqueidentifier),Time(DateTime)

Я могу дублировать идентификатор пользователя, а время - это текущее время, когда мы вставляем запись втаблица.

Я должен выбрать последнюю вставленную запись для каждого пользователя.

Все мои запросы не выполняются.Любая помощь в этом?

Спасибо Туту

Ответы [ 4 ]

1 голос
/ 12 ноября 2010
SELECT u1.*
FROM Users u1
WHERE NOT EXISTS 
    (SELECT *
     FROM Users u2
     WHERE u1.ID = u2.ID AND u2.Date > u1.Date)
0 голосов
/ 12 ноября 2010

ВЫБРАТЬ * ОТ ПОЛЬЗОВАТЕЛЕЙ, ГДЕ ВРЕМЯ В
(ВЫБРАТЬ макс. (Время) ОТ ПОЛЬЗОВАТЕЛЯ ГРУППА ПО USerID)

0 голосов
/ 12 ноября 2010
select * from
(
select *, row_number() over(partition by userid order by time desc) as sno from users
) as t
where sno=1
0 голосов
/ 12 ноября 2010
WITH rows AS (
    SELECT 
        ROW_NUMBER() OVER (PARTITION BY UserID ORDER BY [Time] DESC) AS __ROW,
        SurveyID,
        PKey,
        UserID
    FROM yourTable
)
SELECT SurveyID, PKey, UserID
FROM rows
WHERE __ROW = 1;

Это будет работать в Oracle и SQL Server. Не уверен насчет MySQL или Postgres. Это не будет работать в Access. Двойное подчеркивание __ROW - просто соглашение об именах, которое я иногда использую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...