根据mysql中的时间点添加,在时间范围中选择值

时间:2018-01-28 00:06:37

标签: mysql sql

我有一张下面的表格,我希望在两年后提取所有ids的第一份工资和工资。如果此人未停留两年,则不应在选择中显示身份证和工资。 从表中可以看出,ID可以出现在多行中,但它们始终按时间顺序排序。 最重要的是:

+=======+========+============+=============+
|  id   | salary | from_date  |  to_date    |
+=======+========+============+=============+
| 10001 |  60117 | 1986-06-26 | 1987-06-26  |
| 10001 |  62102 | 1987-06-26 | 1988-06-25  |
| 10001 |  66074 | 1988-06-25 | 1989-06-25  |
| 10001 |  66596 | 1989-06-25 | 1990-06-25  |
| 10001 |  66961 | 1990-06-25 | 1991-06-25  |
| 10001 |  71046 | 1991-06-25 | 1992-06-24  |
| 10001 |  74333 | 1992-06-24 | 1993-06-24  |
| 10001 |  75286 | 1993-06-24 | 1994-06-24  |
| 10001 |  75994 | 1994-06-24 | 1995-06-24  |
| 10001 |  76884 | 1995-06-24 | 1996-06-23  |
| 10001 |  80013 | 1996-06-23 | 1997-06-23  |
| 10001 |  81025 | 1997-06-23 | 1998-06-23  |
| 10001 |  81097 | 1998-06-23 | 1999-06-23  |
| 10001 |  84917 | 1999-06-23 | 2000-06-22  |
| 10001 |  85112 | 2000-06-22 | 2001-06-22  |
| 10001 |  85097 | 2001-06-22 | 2002-06-22  |
| 10001 |  88958 | 2002-06-22 | 9999-01-01  |
| 10002 |  65828 | 1996-08-03 | 1997-08-03  |
| 10002 |  65909 | 1997-08-03 | 1998-08-03  |
+-------+--------+------------+-------------+

输出格式应为: 身份证,工资(入职时),工资(入职后两年)

第一个ID: 10001,60117,66074

目前我只设法提取所有停留时间超过2年的ID,但我不知道如何选择开始时的工资,以及每个ID两年后的工资。

SELECT id, min(from_date), max(to_date)
FROM salaries
GROUP BY id
HAVING DATE_ADD(min(from_date), INTERVAL 3 YEAR)  < max(to_date)

0 个答案:

没有答案