我有返回以下数据的查询:
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子句。
非常感谢。
答案 0 :(得分:5)
SELECT Number, WeekNumber, MAX([Date])
FROM TableName
GROUP BY Number, WeekNumber
你接近MAX(日期),但是你需要GROUP BY其他细节。
答案 1 :(得分:1)
您说Number
和WeekNumber
之间明显的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)