Отбор персонала по возрасту (sql-запрос)

Рейтинг: 1Ответов: 2Опубликовано: 25.12.2014

Почему-то не срабатывает запрос:

SELECT YEAR(GETDATE())-YEAR(born_date) AS age FROM emploees WHERE age>17

Ругается, что age - недопустимое имя столбца. Без WHERE работает хорошо - выдает список возрастов.
Пробовал еще

SELECT * FROM(SELECT YEAR(GETDATE())-YEAR(born_date) AS age FROM emploees) WHERE age>17

но тоже ошибка.

Ответы

▲ 2Принят

Нельзя накладывать условие на поле, которого еще нет. Вы либо в условие введите определение поля, либо подзапрос сделайте.

Первый вариант:

SELECT YEAR(GETDATE())-YEAR(born_date) AS age FROM emploees WHERE YEAR(GETDATE())-YEAR(born_date)> 17
▲ 1

Все верно. Нет такого столбца age. Пишите:

SELECT YEAR(GETDATE())-YEAR(born_date) AS age FROM emploees WHERE (YEAR(GETDATE())-YEAR(born_date))>17