2012-05-11 31 views
1

的最小值分組在SQL Server 2008 R2通過我在SQL運行此命令的組

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 

有兩個ID的是20和我試圖得到的結果與最低日期,因此在這個例子中,這將是

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

我該如何去做所有這一切副本ID的
非常感謝您

+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

當我運行它時,仍然有兩個id爲20的編號 – user867621

+0

重複第一個答案。問題:你只希望結果有重複的行嗎? –

+0

不,我想要所有的行,但與重複只顯示最低日期 – user867621

相關問題