我有一张下面的表格,我希望在两年后提取所有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)