返回每月的Max(Recent_Date),重复值和内部联接问题 - SQL

时间:2013-04-02 15:24:16

标签: sql date inner-join max

基本上,我希望每个月都能像2013年1月到3月那样实现每个用户的Max(Most_Recent_Day)。

示例,从1月到3月,数据库中的每个月,系统都会为每个用户捕获Most_Recent_Day。

以下是预期结果:

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列.Below是列。

User|Total_Hits | Recent_Month| Most_Recent_Day | Most_Recent_Days_Hits

我尝试使用内连接,但结果不是我所期望的。我有重复的用户名和最近一天重复。基本上,我只想显示相同用户名的重复记录。

以下是我得到的结果。请忽略recent_month值,因为它来自数据库的数据。

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]

1 个答案:

答案 0 :(得分:0)

您应该将月份值添加到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