0
SELECT TOP (100) PERCENT dbo.EmployeeInfo.id, MIN(dbo.EmployeeInfo.EmpNo) AS EmpNo,
SUM(dbo.LeaveApplications.DaysAuthorised) AS DaysTaken
FROM dbo.EmployeeInfo LEFT OUTER JOIN dbo.LeaveApplications ON
dbo.EmployeeInfo.id = dbo.LeaveApplications.EmployeeID
WHERE (YEAR(dbo.LeaveApplications.ApplicationDate) = YEAR(GETDATE()))
GROUP BY dbo.EmployeeInfo.id, dbo.EmployeeMaster.EmpNo
ORDER BY DaysTaken DESC
的基本功能,我想要的是檢索表dbo.EmployeeInfo的所有記錄,不論表dbo.LeaveApplications是否存在相應的記錄。如果EmployeeInfo排在LeaveApplications沒有相關的行,我想回到它的SUM(dbo.LeaveApplications.DaysAuthorised) AS DaysTaken
柱爲NULL,或者甚至可能把0問題將where子句的T-SQL LEFT OUTER JOIN查詢
有了上面的查詢,如果我刪除了where條件,我能達到什麼樣的我想,但問題是我也想從LeaveApplication返回相關的行,只有當ApplicationDate在當前年份。
與WHERE條件添加現在,我只能從EmployeeInfo獲得行,只有當他們在LeaveApplications相應的行但我只是想所有EmployeeInfo
行
你有什麼要發生,如果沒有相應的'LeaveApplications'?它應該在返回行的where子句中做什麼? – Oded 2010-05-04 10:03:28
如果沒有LeaveApplications,我仍然想返回EmployeeInfo中的所有行,然後爲dbo.LeaveApplications.DaysAuthorised查詢結果列指定一個NULL值,甚至0。 – StackTrace 2010-05-04 10:39:19
可能我應該補充一點,即使在LeaveApplications中有0個相關的行,我仍然想要檢索EmployeeInfo中的所有記錄,然後爲每個返回的行顯示「DaysAuthorised」列的0(零)。 – StackTrace 2010-05-04 10:43:13