问题描述
我还是sql的新手。我试图显示所有“人”记录的出生日期在1955年之前,使用子查询提取该年之前的所有员工出生日期:
SELECT
PP.FirstName,PP.LastName
FROM
Person.Person PP
INNER JOIN
HumanResources.Employee HE ON PP.BusinessEntityID = HE.BusinessEntityID
WHERE
BirthDate = (SELECT YEAR(BirthDate)
FROM HumanResources.Employee
WHERE YEAR(BirthDate) < 1955)
我尝试过分别运行主查询和子查询,它们都可以工作。但是一起使用它们,我会收到错误消息:
Msg 206,第16级,状态2,第2行
操作数类型冲突:日期与int不兼容
我想念什么?谢谢,如果您决定提供帮助。
解决方法
您可能还打算在BirthDate
子句中比较WHERE
的年份,而不是日期本身:
SELECT PP.FirstName,PP.LastName
FROM Person.Person PP
INNER JOIN HumanResources.Employee HE
ON PP.BusinessEntityID = HE.BusinessEntityID
WHERE YEAR(BirthDate) IN (SELECT YEAR(BirthDate) -- change is here
FROM HumanResources.Employee
WHERE YEAR(BirthDate) < 1955);