查询在
下面select fname,lname,DATEDIFF(YY,birthdate,GETDATE()) as age from EMPLOYEE where age = 72
但是有错误说 - > “列名'年龄'无效。
我该如何解决?谢谢!
答案 0 :(得分:1)
在SQL Server中,您必须重复表达式(来自select
)以在where
子句中使用它:
select fname,lname,DATEDIFF(Year,birthdate,GETDATE()) as age
from EMPLOYEE
where DATEDIFF(Year,birthdate,GETDATE()) = 72
除非使用类似cross apply()
的内容来创建计算字段。
答案 1 :(得分:1)
我最喜欢在SQL Server中执行此操作的方法是使用横向连接:
select e.fname, e.lname, v.age
from EMPLOYEE e cross apply
(values (DATEDIFF(year, birthdate, GETDATE())) v(age)
where v.age = 72;
注意:
答案 2 :(得分:0)
只需重复where
子句中的表达式:
select fname,
lname,
DATEDIFF(YY, birthdate, GETDATE()) as age
from EMPLOYEE
where DATEDIFF(YY, birthdate, GETDATE()) = 72