我正在玩Microsoft SQL Server为了熟悉软件和学习SQL。我正在使用一个样本数据库,其中包含有关公司雇员的信息。在SQL中使用相同的输出两次时,如何避免函数的重复?
这是我目前正与工作代码:
SELECT [LoginID]
,[OrganizationLevel]
,[JobTitle]
,[BirthDate]
,[MaritalStatus]
,[Gender]
,[HireDate]
,[VacationHours]
,[SickLeaveHours]
,DateDiff(Year, BirthDate, GetDate()) AS 'Age'
FROM [AdventureWorks2014].[HumanResources].[Employee]
WHERE MaritalStatus = 'M' AND (DateDiff(Year, BirthDate, GetDate()) > 40)
ORDER BY Gender, Age ASC;
正如你所看到的,我想只显示已婚员工这是40岁以上的今天,也显示他们的年龄在'年龄'栏。
我曾尝试以下:
WHERE MaritalStatus = 'M' AND ((DateDiff(Year, BirthDate, GetDate())) AS 'Age') > 40
,以避免使用DATEDIFF()
函数两次,但它是不成功的。
我估计它关系到
DateDiff(Year, BirthDate, GetDate()) AS 'Age'
是的SELECT
外面,但我找不到此刻另一种解决方案。
在此先感谢那些能够启发我的人。
'DATEDIFF'不会做你的描述。如果你想找到超过40岁的人,截至今天,你最好从今天减去40年,并将其与DOB列进行比较。 (提示'DATEDIFF(year,'20011231','20020101')'returns'1') –
查询的结果是什么?你有错误吗? –
@CoskunOzogul我得到错误:'消息156,级别15,状态1,行13 'AS'附近的语法不正确(注意:我已经在原始文章中编辑过该行,括号没有正确定位) – ilomax