SQL:在计算值上选择Max()的多列

时间:2012-11-11 22:10:22

标签: sql

真正基本:我的表T包含以下数据:

ID   StartDate  Term (months)
----------------------
1    10/1/2012   12
2    10/1/2012   24
3    12/1/2012   12

我需要知道具有最大结束日期的行的ID。我已成功计算出结束日期为 从表中选择max(DateAdd(month,term,StartDate)[这将导致10/1/2014]

如何获取包含最大结束日期的行的ID值和开始日期?

2 个答案:

答案 0 :(得分:1)

MS SQL:

SELECT TOP 1 ID, StartDate
FROM T
ORDER BY DateAdd(month, term, StartDate) DESC

MySQL的:

SELECT ID, StartDate
FROM T
ORDER BY DateAdd(month, term, StartDate) DESC
LIMIT 1

答案 1 :(得分:0)

如果多个ID具有相同的极端“结束日期”且您需要它们,您可以尝试这样做:

SELECT x.id
FROM (
   SELECT id
        , RANK ( ) OVER ( ORDER BY  DateAdd(month, term, StartDate) DESC) as rn
   FROM T
   ) x
WHERE t.rn = 1