[英]SQL Select the most recent record for each ID
我有兩個表,第一個是這樣的:
INTERNSHIP
ID| Term
---------
1 | 2015
1 | 2014
2 | 2016
2 | 2017
第二個是這樣的:
Term
Term| Term Description | End Date
---------------------------------
2014 | Summer 2014 | 8/12014
2014 | Summer 2014 | 8/12014
2015 | Fall 2015 | 12/1/2015
2017 | Spring 2017 | 4/1/2017
2017 | Spring 2017 | 6/1/2017
我需要找到所有ID的最新術語的“術語描述”。 期望的結果是這樣的:
ID| Term | Term Description
------------------
1 | 2015 | Fall 2015
2 | 2017 | Spring 2017
我做了一些研究,並提出了這樣的解決方案:
SELECT INTERNSHIP.ID, INTERNSHIP.Term
FROM INTERNSHIP
WHERE (
SELECT MAX(INTERNSHIP.Term)
)
GROUP BY INTERNSHIP.ID
這樣,我就獲得了帶有最新術語的唯一ID,但是我無法將其與術語描述結合在一起。 有人可以幫助我獲得理想的結果嗎?
您的SQL版本是否允許您使用窗口函數?
如果是這樣,您可以像這樣輕松解決:
SELECT C.ID,C.Term,C.Term_Description
FROM(
SELECT A.ID,A.TERM,B.Term_Description,Max(A.Term) OVER (PARTITION BY A.ID) AS Most_Recent_Year
FROM INTERNSHIP A INNER JOIN TERM B ON A.Term = B.Term
)C
WHERE C.Term = C.Most_Recent_Year
嘗試這個:
SELECT i.id, i.term, t.Term_Description
FROM INTERNSHIP i
INNER JOIN Term t ON t.Term = i.term
INNER JOIN (
SELECT MAX(t.End_Date) End_Date
FROM INTERNSHIP i
INNER JOIN Term t ON t.Term = i.term
GROUP BY i.ID) t1 ON t1.End_Date = t.End_Date
我建議:
SELECT i.id, i.term, t.Term_Description
FROM (SELECT i.id, MAX(i.Term) as term
FROM INTERNSHIP i
GROUP BY i.id
) i JOIN
Term t
ON t.Term = i.term;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.