我正在玩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