这就是我目前所拥有的。
DECLARE @EmployeeLengthAfterHire INT
SET @EmployeeLengthAfterHire = (
SELECT EmpID,DATEDIFF(YY,HireDate,GETDATE()) AS lengthofEmployYY
FROM HospitalStaff
GROUP BY HireDate, EmpID
HAVING DATEDIFF(YY,HireDate,GETDATE()) > 3
)
SELECT @EmployeeLengthAfterHire
我可以看到您试图在声明的参数中分配2个值(EmpID和EmployYY的长度(,这是不受支持的。根据我的理解,你可以试试下面的脚本-
DECLARE @EmployeeLengthAfterHire INT
SET @EmployeeLengthAfterHire = (
SELECT COUNT(*)
FROM HospitalStaff
GROUP BY HireDate, EmpID
HAVING DATEDIFF(YY,HireDate,GETDATE()) > 3
)
SELECT @EmployeeLengthAfterHire
创建一个变量来存储在公司工作超过3年的员工数量
如果您想将变量设置为计数,您会遇到两个问题:
- 您的子查询有多个列
- 您的子查询可能返回多行
您可以使用:
SET @EmployeeLengthAfterHire = (
SELECT COUNT(*)
FROM HospitalStaff
WHERE DATEDIFF(YEAR, HireDate, GETDATE()) > 3
)
也就是说,您的查询是而不是计算超过3年。它正在计算两个日期之间的年份界限。因此,2019-12-31和2020-01-01将是";1〃;按照这个逻辑相隔一年。
我建议:
SET @EmployeeLengthAfterHire = (
SELECT COUNT(*)
FROM HospitalStaff
WHERE HireDate < DATEADD(YEAR, -3, HireDate)
);
我不知道你为什么把这个专栏命名为";EmployeeLengthAfterHire";。