2012-12-10 61 views
1

我有點被這個MSSQL查詢困住了,並且真的很感謝這個幫助!我試圖簡單地總結一下在某個特定時期內工作人員的假期數量。使用WHERE子句當使用COUNT()和JOIN加總條目時

SELECT e.EMPLOYEE_ID, COUNT(y.EMPLOYEE_ID) AS TOTAL_HOLIDAYS FROM EMPLOYEE e 
LEFT OUTER JOIN 
HOLIDAY y 
ON e.EMPLOYEE_ID = y.EMPLOYEE_ID 
WHERE e.IS_ACTIVE = 'true' 
-- AND y.[DATE] BETWEEN '20121201' AND '20121210' 
GROUP BY e.EMPLOYEE_ID 

該查詢樣的給我我需要什麼,但我想添加一個過濾器採取在假期時......我必須要對這個錯誤的方式。我需要將所有員工列入數據集 - 例如即使HOLIDAY表中沒有任何內容,我也想要結果。

ID TOTAL_HOLIDAYS 
1 0 
2 0 
etc. 

當我嘗試添加註釋行(我知道這兩個日期之間沒有節假日),則不返回任何行。如何重寫此查詢以始終列出所有活動的EMPLOYEE_ID並計算兩個日期之間的假期?

回答

2

移動狀態進入連接:

SELECT e.EMPLOYEE_ID, COUNT(y.EMPLOYEE_ID) AS TOTAL_HOLIDAYS 
FROM EMPLOYEE e 
LEFT OUTER JOIN HOLIDAY y 
ON e.EMPLOYEE_ID = y.EMPLOYEE_ID 
AND y.[DATE] BETWEEN '20121201' AND '20121210' 
WHERE e.IS_ACTIVE = 'true' 
GROUP BY e.EMPLOYEE_ID 
+0

謝謝主席先生 - 這個整理我的問題,是一個非常快速的答覆。 – SWilliams