日期:2014-05-16  浏览次数:20505 次

求最大的一行 关于 max
SELECT A.ConfirmationCodeID, B.OverdueDate, C.CourseName FROM A INNER JOIN B ON A.ConfirmationCodeID = B.id INNER JOIN C ON B.CourseID = C.id

OverdueDate 是日期行

结果会有  多行

求 在 CourseName相同的时候   只保留最大OverdueDate的 那行


问题是  我直接使用 max(OverdueDate)   没有效果


请指教
------解决方案--------------------
引用:
如果是简单的  MAX(OverdueDate)     GROUP BY ConfirmationCodeID, CourseName

就好办了

但现在只能   MAX(OverdueDate)     GROUP BY  CourseName
造成 ConfirmationCodeID  没地方 放了


试试这个:
select ConfirmationCodeID, OverdueDate, CourseName
from
(
SELECT A.ConfirmationCodeID, B.OverdueDate, C.CourseName ,
       ROW_NUMBER() over(partition by CourseName order by OverdueDate desc) rownum
FROM A INNER 
JOIN B ON A.ConfirmationCodeID = B.id 
INNER JOIN C ON B.CourseID = C.id
where v = 26
)t
where rownum = 1