Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 创建一个变量来存储大于3的DATEDIFF计数_Sql_Variables_Count_Datediff - Fatal编程技术网

Sql 创建一个变量来存储大于3的DATEDIFF计数

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

这可能真的很简单,我可能想得太多了。我必须创建一个变量来存储受雇于公司超过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年的员工的条件可以包含在查询中,并存储在一个变量中,而不是使用多个变量,然后获取这些员工的计数

谢谢