Sql查询,根据1个查询中的2个条件计算总计

Sql查询,根据1个查询中的2个条件计算总计,sql,sql-server,Sql,Sql Server,我有一张如下表: Employee : EmpNo FirstName LastName Dept : DeptName Head NoOfEmployees EmpContracts : EmpNo DeptName Salary StartDate EndDate 1 d1 1000 2017-12-12 2018-12-12 1 d2 1000 2017-06-12 20

我有一张如下表:

Employee : 

EmpNo
FirstName
LastName

Dept : 

DeptName
Head
NoOfEmployees

EmpContracts : 

EmpNo  DeptName   Salary    StartDate     EndDate
1      d1         1000      2017-12-12    2018-12-12
1      d2         1000      2017-06-12    2018-12-12
2      d3         1000      2017-06-12    2018-12-12
2      d4         1000      2017-12-12    2018-12-12     
3      d5         4000      2017-12-12    2018-12-12
这就是我想做的:

显示合同的部门详细信息和工资总额 在每个部门,具有以下条件:1计算总数 合同必须由专门为此工作的员工签订 第2部门合同计算的总金额应在2001年之后,由NoOfEmployees确定

我不知道如何在1个查询中同时满足这两个条件

这就是我迄今为止所尝试的:

select [EmpNO],[DeptName],[StartDate], SUM([Salary]) from [dbo].[EmpContracts]
group by [EmpNo],[DeptName],[StartDate]
having YEAR([StartDate]) > 2001

有谁能帮我做这个吗?

我不确定,但在这里:

select EmpNO, max(DeptName), SUM(Salary) total_sal
from EmpContracts 
where year(StartDate) > 2001
group by EmpNo
having count(distinct DeptName) =1;

你们能提供一些插入表和创建表吗scripts@SurajKumar但是这有什么帮助呢?抱歉,我只是想理解一下,把EmpNo从分组中去掉,然后把它放到countEmpNo中NoOfEmployees@SeanR但是我应该在哪一列上分组呢?但是在你的输出中,您得到的emp no 1是不正确的,因为emp no 1在多个部门工作参见我的示例数据,在我的第一个条件中,它显示“专门为该部门工作的员工”。Hi@ILoveStackoverflow这是一个新的解决方案。从你的解释中我不明白这一点,这就是为什么在你的问题中有一个预期的结果总是一件好事。希望这有帮助。干杯嗨@ILoveStackoverflow这个答案对你有帮助吗?现在它确实返回了您所请求的内容。如果有帮助,请投票表决。我相信这是正确的。然后将答案标记为正确。如果不符合上述要求,请像oyu第一次做的那样进行评论,看看它是什么?