Вы можете использовать:
SELECT CONCAT(firstName, surname) as FullName, skillId, dateLapses
WHERE EmployeeSkill Full Join
Employee
ON EmployeeSkill.employeeId = Employee.id
WHERE YEAR(dateLapses) = YEAR(DATEADD(YEAR, 1, GETDATE()));
Тем не менее, улучшенный запрос:
SELECT CONCAT(e.firstName, e.surname) as FullName, skillId, dateLapses
WHERE Employee e JOIN
EmployeeSkill es
ON es.employeeId = e.id
WHERE es.dateLapses >= DATEFROMPARTS(YEAR(GETDATE()) + 1, 1, 1) AND
es.dateLapses < DATEFROMPARTS(YEAR(GETDATE()) + 2, 1, 1);
Примечания:
- Укажите имена всех столбцов, поэтомуПонятно, откуда они берутся.
- Используйте значимые псевдонимы таблиц, чтобы легче было писать и читать запрос.
FULL JOIN
редко требуется и, конечно, не в этом случае. Предложение WHERE
в любом случае превращает его в LEFT JOIN
. - Логика даты не зависит от индекса ( sargable ), поскольку аргументы функций не берутся из табличных данных.