Sql 创建一个变量来存储大于3的DATEDIFF计数
这可能真的很简单,我可能想得太多了。我必须创建一个变量来存储受雇于公司超过3年的员工数量 这是我想到的,因为原始表没有存储年份,只有一列包含雇用日期Sql 创建一个变量来存储大于3的DATEDIFF计数,sql,variables,count,datediff,Sql,Variables,Count,Datediff,这可能真的很简单,我可能想得太多了。我必须创建一个变量来存储受雇于公司超过3年的员工数量 这是我想到的,因为原始表没有存储年份,只有一列包含雇用日期 DECLARE @YearsEmployed int, @Plus3 int, @EmpCount int SET @YearsEmployed = (SELECT DATEDIFF(YY,HireDate,GetDate()) FROM employees) SET @Plus3 = @YearsEmployed > 3
DECLARE @YearsEmployed int,
@Plus3 int,
@EmpCount int
SET @YearsEmployed = (SELECT DATEDIFF(YY,HireDate,GetDate())
FROM employees)
SET @Plus3 = @YearsEmployed > 3
SET @EmpCount = COUNT(@Plus3)
SELECT @EmpCount
我已经遇到了“靠近'>'的语法不正确”错误,我不知道如何继续。如蒙协助,将不胜感激 对我来说似乎是一个简单的问题:
select count(1)
from employees
where HireDate < dateadd(year, -3, getdate())
选择计数(1)
来自员工
其中HireDate
注意:我选择了带有当前日期的dateadd
,而不是列值上的datediff
表达式,因为后者不是
就您编写的代码而言,错误来自尝试将布尔表达式(
@YearsEmployed>3
)的结果赋给变量。此外,如果employees
中有多行,则查询SET@yearsemployeed=…
将失败。此外,我不相信COUNT()
可以在查询之外使用,即使可以,也不会有任何用处。下面的查询将为您统计在公司工作3年以上的员工人数:
DECLARE @EmpCount int
SET @EmpCount = (SELECT count(DATEDIFF(YY,HireDate,GetDate()))
FROM employees where DATEDIFF(YY,HireDate,GetDate()) > 3)
SELECT @EmpCount
计数和挑选工作超过3年的员工的条件可以包含在查询中,并存储在一个变量中,而不是使用多个变量,然后获取这些员工的计数
谢谢