返回每个月的最大值(最近的_日期),重复值和内部联接问题-SQL

返回每个月的最大值(最近的_日期),重复值和内部联接问题-SQL,sql,date,inner-join,max,Sql,Date,Inner Join,Max,基本上,我想实现,从2013年1月到3月,每个月,如本例中所示,每个用户的最大值(最近一天)是多少 例如,从1月到3月,在数据库中的每个月,系统将为每个用户捕获最近的一天 预期结果如下: User | Most_Recent_Day -------------------------------- afolabi.banu | 1/31/2013 afolabi.banu | 2/7/2013 afolabi.banu

基本上,我想实现,从2013年1月到3月,每个月,如本例中所示,每个用户的最大值(最近一天)是多少

例如,从1月到3月,在数据库中的每个月,系统将为每个用户捕获最近的一天

预期结果如下:

User                 | Most_Recent_Day
--------------------------------
afolabi.banu         | 1/31/2013
afolabi.banu         | 2/7/2013
afolabi.banu         | 3/21/2013
mario.sapiter        | 1/22/2013
mario.sapiter        | 2/7/2013
mario.sapiter        | 3/11/2013
但是,我还想显示另一个DB列。下面是该列

User|Total_Hits | Recent_Month| Most_Recent_Day | Most_Recent_Days_Hits
我尝试使用内部联接,但结果不是我所期望的。我有重复的用户名和重复的最近一天。基本上,我只想显示相同用户名的无重复记录

下面是我得到的结果。请忽略最近_月值,因为它是数据库中的数据

User          |Total_Hits | Recent_Month   | Most_Recent_Day | Most_Recent_Days_Hits
-------------------------------------------------------------------------------------
afolabi.banu  | 223   |   25       |   2/7/2013      |  5
afolabi.banu  | 223   |   25       |   2/7/2013      |  5
afolabi.banu  | 211   |   13       |   1/31/2013     |  3
afolabi.banu  | 223   |   25           |   2/7/2013      |  5
afolabi.banu  | 296   |   31       |   3/21/2013     |  1
afolabi.banu  | 296   |   31           |   3/21/2013     |  1
mario.sapiter | 95    |   7        |   2/7/2013      |  5
mario.sapiter | 7     |   7        |   3/21/2013     |  1
mario.sapiter | 7     |   37           |   3/22/2013     |  1
mario.sapiter | 249   |   37       |   2/7/2013      |  5
这是我的SQL代码

SELECT t.[User],
t.Total_Hits,
t.Recent_Month,
t.Most_Recent_Day, 
t.Most_Recent_Day_Hits FROM UserUsageMonthly t
INNER JOIN 
(
select  
[User]
, max(Most_Recent_Day) as Most_Recent_Day
from UserUsageMonthly (NoLock)
where Application_Name='Daily Production Review' and Site_Collection='wrm13' 
and Most_Recent_Day between '1/1/2013' and '3/31/2013'  
group by [User], datepart(month,Most_Recent_Day) 
) table2
ON
t.[User]=table2.[User]
AND t.Most_Recent_Day = table2.Most_Recent_Day 
order by t.[User]

您应该将月份值添加到SQL SELECT中

SELECT 
MONTH(t.Most_Recent_Day) as 'MyMonth',
t.[User],
t.Total_Hits,
t.Recent_Month,
t.Most_Recent_Day, 
t.Most_Recent_Day_Hits FROM UserUsageMonthly t
然后可以按月份列进行分组

GROUP BY MyMonth