首页 > 解决方案 > Sql 查询根据 1 个查询中的 2 个条件计算总计

问题描述

我有一张如下表:

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

有人可以帮我吗?

标签: sqlsql-server

解决方案


我不确定,但这里是:

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

这是一个演示


推荐阅读