2012-05-11 8 views
1

Я бег этой команды в SQLГруппировка в SQL Server 2008 R2 по минимальному значению группы

select ID, TASK, CreatedBy,CreateDate 
from John Results group by ID, TASK, CreatedBy, CreateDate 

, который возвращает этого

20 text user1 2008-11-07 19:10:47.230 
20 text user2 2008-11-07 17:45:17.993 
24 text user3 2008-11-07 18:58:08.727 
25 text user4 2008-11-07 20:19:01.293 
36 text user5 2008-11-10 21:31:23.610 
37 text user6 2008-11-10 21:34:09.597 
38 text user7 2008-11-10 21:35:19.660 

Есть два идентификаторов, которые 20 и я пытаясь получить результат с самой низкой датой, поэтому в этом примере это будет

20 text user2 2008-11-07 17:45:17.993 

Как бы я сделал это для всех дубликат удостоверения личности
Большое спасибо

+0

Вы CreatedBy в ваш выбор и группировка по CreatedBy, а так, поскольку ИО 20 имеет user1 и user2 вы все еще собираетесь получить обе строки – Gratzy

+0

, когда я не включаю его в группу, я получаю ошибку недействительной в списке выбора, потому что она не содержится ни в агрегатной функции, ни в предложении GROUP BY. – user867621

+0

Правильно, если он находится в вашем списке выбора, он также должен быть в вашей группе – Gratzy

ответ

3
WITH mycte 
    (id, createdate, createdby, rownum) 
    AS 
    (
    SELECT id, createdate,createdby, ROW_NUMBER() OVER (PARTITION BY id ORDER BY createdate ASC) AS ROWNUM 
    FROM johnresults 
    ) 

    SELECT j.id, j.task, mycte.createdby, mycte.createdate 
    FROM 
    johnresults j 
    inner join mycte ON j.id = mycte.id and mycte.rownum = 1 
    GROUP BY j.id, j.task, mycte.createdby, mycte.createdate 
0
select ID, TASK, CreatedBy, min(CreateDate) as 'LowestDate' 
from John Results 
group by ID, TASK, CreatedBy 
+0

, который по-прежнему возвращает тот же набор – user867621

+0

Извините, проверьте изменения, вы должны удалить «CreateDate» из своей группы. –

+0

и снова. все тот же набор. Я думаю, что из-за этого есть два разных человека. – user867621

3
select ID, TASK, FIRST(CreatedBy),MIN(CreateDate) as 'LowestDate' 
from John Results group by ID, TASK, CreatedBy, CreateDate 
having CreateDate = LowestDate 
+0

, который все еще имеет два идентификатора из 20, когда я запускаю его – user867621

+0

Дубликат первого ответа. Вопрос. Вам нужны только результаты для строк с дубликатами? –

+0

нет, я хочу, чтобы все строки, но с теми, у которых есть дубликаты, отображали только ту, которая имеет самую низкую дату. – user867621

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