2014-10-17 28 views
2

我想獲得課程的最後註冊日期,但我想知道thar記錄的id。由於MAX是一個函數,因此我必須使用id,這是我不想要的,因爲結果非常不同(從每個記錄到每個記錄只有一條記錄)。是否有可能得到一個不在(SQL)組中的列的函數結果?

這是管理這樣的查詢?:

SELECT id, MAX(registration_date) AS registration_date 
FROM courses; 

因爲它給出了一個錯誤,我必須這樣做是爲了避免方式:

SELECT id, MAX(registration_date) AS registration_date 
FROM courses 
GROUP BY id; 

而且我不希望最後一個的結果。

回答

0

您可以使用rank()窗函數爲:

SELECT id 
FROM (SELECT id, RANK() OVER (ORDER BY registration_date DESC) AS rk 
     FROM courses) 
WHERE rk = 1 
+0

謝謝!這就是我想要的。 – forvas 2014-10-17 10:47:20

0

一種方法是使用子查詢是這樣的:

select * 
from [dbo].[Courses] 
where registration_date = 
(select max(registration_date) 
from [dbo].[Courses]) 

但只有一個日期,以配合這可能會返回更多比一項紀錄。 如果可能,請在where子句中包含更多字段以縮小範圍。

+1

對於Postgres(或標準SQL),這不是有效的SQL – 2014-10-17 11:01:31

相關問題