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, смогу достичь того, чего хочу, но проблема в том, что я также хочу возвращать связанные строки из LeaveApplication, только если ApplicationDate находится в текущем году.
Теперь, когда добавлено условие where, я могу получить строки из EmployeeInfo, только если они имеют соответствующие строки в LeaveApplications, но я просто хотел, чтобы все строки были в EmployeeInfo