SQL返回每周的最新日期

时间:2012-09-21 09:15:29

标签: sql date distinct max

我有返回以下数据的查询:

Number  WeekNumber  Date
1111    23          9/11/12 11:01 AM
1111    23          9/11/12 11:58 AM
2222    24          9/17/12 10:14 AM
2222    24          9/18/12 9:52 AM
2222    24          9/19/12 9:46 AM
2222    24          9/20/12 9:42 AM

然而,我想要的是获得每周的最新日期,结果应该是:

Number  WeekNumber  Date
1111    23          9/11/12 11:58 AM
2222    24          9/20/12 9:42 AM

我可以用什么来获得这个。我试过使用MAX(DATE),但我得到的是最新的日期,而不是每周的最新日期。我也试过了不同的但我无法使用WHERE子句。

非常感谢。

2 个答案:

答案 0 :(得分:5)

SELECT Number, WeekNumber, MAX([Date])
FROM TableName
GROUP BY Number, WeekNumber

你接近MAX(日期),但是你需要GROUP BY其他细节。

答案 1 :(得分:1)

您说NumberWeekNumber之间明显的1:1关系是您发布的数据的假象,并不真正适用于您的实际数据。如果是这种情况,直截了当的GROUP BY将无法提供您的答案。

如果您正在使用一种使用分析函数的RDBMS,那么这将起作用:

select distinct number
       , weeknumber
       , max(date) over (partition by weeknumber) as weekly_max_date
from yourtable;

如果您没有分析,则需要使用相关的子查询:

select distinct t.number
       , t.weeknumber
       , q.weekly_max_date
from yourtable t
     join ( select weeknumber, max(date) as weekly_max_date
            from yourtable
            group by weeknumber) q
     on (q.weeknumber = t.weeknumber)