2013-04-02 57 views
0

基本上,我希望在2013年1月至3月的每個月內實現像本示例中那樣的Max(Most_Recent_Day)每個用戶。每月返回最大(Recent_Date),重複值和內部連接問題 - SQL

示例:從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 

不過,我想有另一個數據庫列,以及要顯示。下面是列。

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] 

回答

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