我的查詢有問題,我希望它返回結果集爲Year = 2013,Month = 1但每個用戶只有一行每個月,與當月登錄小時數總計,我認爲這個問題是我的分組:SQL Server 2008:select在一個月內返回多個結果,而不是每個用戶1個
SELECT YEAR(UP_Date) AS 'Year',
MONTH(UP_Date) AS 'Month',
SUM(ISNULL(UP_UserID,0)) AS UserID,
U_UserName AS UserName,
UP_AveCallTime AS AveCallTime,
UP_TotCallTime AS TotCallTime,
CAST(DATEDIFF(DAY,UP_LogOn, UP_LogOff) AS varchar) + ':' +
CAST(DATEDIFF(HOUR,UP_LogOn, UP_LogOff) AS varchar) + ':' +
CAST(DATEDIFF(MINUTE,UP_LogOn,UP_LogOff) AS varchar) AS [HoursOfMonth]
FROM [RPT_User_Performance_Data_cus]
INNER JOIN Users us ON
UP_UserID = us.ID
GROUP BY Year(UP_Date), MONTH(UP_Date), UP_AveCallTime, UP_TotCallTime, U_UserName, UP_LogOn, UP_LogOff
------Result I Get----------------------------
Year Month UserID UserName AveCallTime TotCallTime HoursOfMonth
2013 6 18552 BossJobs NULL NULL 0:0:4
2013 6 18552 BossJobs NULL NULL 0:0:02
2013 6 18552 BossJobs NULL NULL 0:3:21
2013 6 18552 BossJobs NULL NULL 0:5:01
2013 6 18552 BossJobs NULL NULL NULL
2013 6 18553 KingGates NULL NULL 0:0:2
2013 6 18553 KingGates NULL NULL 0:1:31
-------Instead of ---------------------
Year Month UserID UserName AveCallTime TotCallTime HoursOfMonth
2013 6 18552 BossJobs NULL NULL 0:5:24
2013 6 18553 KingGates NULL NULL 0:1:33
這裏有幾個問題。首先我可以看到你也有同樣的用戶(BossJobs)的2個不同的UserId,從我能告訴你正在尋求總結一天,小時和分鐘,是這種情況?如果是這樣,你不能總結一個varchar他們需要被轉換爲INT。同樣,即使你將總和加起來也不會達到預期的輸出。請你澄清這些問題 –