首页 > 解决方案 > 写入查询以迭代就业数据表并执行服务持续时间的总和

问题描述

我正在研究员工数据库并尝试使用每个员工的服务时间查询员工结果集。Service Duration 将通过用 APP 日期和 TER 日期减去就业历史表 Ondate 来计算。有两张桌子

表 1 - 员工

Id - Primary key,
Name,
post,
Office,
Salary

表 2 - 工作经历

Id - Primary Key
ActionType,
OnDate,
EmployeeId - Foreign Key

有两种主要的操作类型: APP - 约会 TER - 终止

如果操作类型是 APP 和 TER,我需要计算员工历史记录的持续时间

表 2 - (就业历史)呈现这样的数据

Id | ActionType | OnDate    | EmployeeId
-----------------------------------------------
1 | APP         |02/02/2011 | 1
2 | TER         |03/05/2018 | 1
3 | APP         |01/07/2018 | 1
4 | TER         |02/06/2019 | 1
5 | APP         |01/01/2008 | 2
6 | TER         |02/03/2014 | 2

目前我刚刚用 INNER JOIN 加入了两个表。如果员工历史有两个工作记录,那么它将给出这样的重复记录

EmpID | Name | OnDate    | EndDate    | Duration
----------------------------------------------
 1    |emp1  |01/01/2016 | 02/06/2017 | 1.5 year
 1    |emp1  |03/08/2017 | 31/12/2018 | 1.4 years
 2    |emp2  |02/03/2015 | 05/04/2016 | 1.1 year 
 2    |emp2  |01/05/2017 | 19/03/2019 | 1.10 years

取而代之的是,我想获取每个员工记录的持续时间并将每个单独的记录相加并将其显示在一行中

我想要这样的结果集

Id | Name | Service Duration
----------------------------
1  |emp1  | 2.9 years
2  |emp2  | 2.2 Year

是否有可能得到这样的结果。请帮忙

标签: sqlsql-servertsql

解决方案


尝试这个:

select Id, sum(Duration)
from EmploymentHistory
group by Id

推荐阅读