创建一个变量来存储在公司工作超过3年的员工人数



这就是我目前所拥有的。

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";。

相关内容

最新更新