sql dateiff, сравнивающий возраст и возраст - PullRequest
1 голос
/ 28 апреля 2020

Впервые с помощью переполнения стека все классы были запущены онлайн, и я ужасно отношусь к онлайн-классам.

Вопрос прост: мне нужно собрать информацию о сотрудниках, которым было 35 лет или меньше, когда они начинали в компании, использующей datediff.

мой код выглядит следующим образом:

Select EmployeeID, FirstName, LastName, BirthDate, HireDate,
datediff(year, BirthDate,HireDate) Age 
from Employees
where age<=35;

без указания «где» будет указываться возраст людей, когда они начинали. Я пытаюсь отобразить столбец возраста, который я создал, чтобы опубликовать всех, кто был младше 35 лет или меньше. однако, я получаю синтаксическую ошибку с возрастом. очевидно, он не существует в базе данных sql. любая помощь будет оценена.

1 Ответ

0 голосов
/ 28 апреля 2020

Предложение where не может ссылаться на псевдоним, определенный в предложении select (последнее выполняется после первого).

Вам нужно повторить выражение в обоих пунктах:

select 
    e.*, 
    datediff(year, BirthDate,HireDate) Age 
from employees e
where datediff(year, BirthDate,HireDate) <= 35

Или вы можете использовать заблокированную таблицу (подзапрос или выражение общей таблицы) - но она менее эффективна и выглядит как перебор для этого простого выражения:

select *
from (
    select
        e.*, 
        datediff(year, BirthDate,HireDate) age 
    from employees e
) e
where age <= 35
...