我正在使用SQL Server 2008 R2並具有以下查詢。我基本上試圖返回兩列,即員工姓名和他們爲當月所做的電話總數。我已經得到了查詢運行,但是當它發生時,它會花費相當長的一段時間,並且它會返回大量不正確的總計呼叫數。任何人都可以幫我一把嗎?SQL:計算加入所產生的行
Select A.Name, count(1) As TotalCalls
From Calls B INNER JOIN Employees A on B.EmployeeID = A.TechID
Where A.Name IN ('Steven', 'John', 'Mark', 'Jason', 'Tom')
AND Month(B.CreationDate) = Month(GetDate()) and Year(B.CreationDate) = Year(GetDate())
Group By A.Name
編輯: 我曾嘗試以下查詢,我覺得我現在很接近。它返回的結果集是準確的,我只是不確定如何使這個查詢只看當前的月份。
Select A.Name, B.CallCount
From Employees A Inner Join (Select EmployeeID, Count(*) As CallCount From Calls Group By EmployeeID) B
On A.TechID = B.EmployeeID
Where A.Name IN ('Steven', 'John', 'Mark', 'Jason', 'Tom')
Group By A.Name, B.CallCount
您是否試圖在沒有組的情況下運行查詢來查看它是否返回預期的行? – Serpiton
是的,它表示「列'A.Name'在選擇列表中無效,因爲它不包含在聚合函數中,並且沒有GROUP BY子句。」 – user3272370
抱歉複製粘貼錯誤的東西,我編輯了我以前的評論。 – user3272370