Напишите запрос в SQL, чтобы отобразить сведения о текущей работе для тех сотрудников, которые ранее работали торговым представителем. - PullRequest
0 голосов
/ 29 января 2020

Таблица - job_history

+-------------+------------+------------+------------+---------------+
| EMPLOYEE_ID | START_DATE | END_DATE   | JOB_ID     | DEPARTMENT_ID |
+-------------+------------+------------+------------+---------------+
|         102 | 2001-01-13 | 2006-07-24 | IT_PROG    |            60 |
|         101 | 1997-09-21 | 2001-10-27 | AC_ACCOUNT |           110 |
|         101 | 2001-10-28 | 2005-03-15 | AC_MGR     |           110 |
|         201 | 2004-02-17 | 2007-12-19 | MK_REP     |            20 |
|         114 | 2006-03-24 | 2007-12-31 | ST_CLERK   |            50 |
|         122 | 2007-01-01 | 2007-12-31 | ST_CLERK   |            50 |
|         200 | 1995-09-17 | 2001-06-17 | AD_ASST    |            90 |
|         176 | 2006-03-24 | 2006-12-31 | SA_REP     |            80 |
|         176 | 2007-01-01 | 2007-12-31 | SA_MAN     |            80 |
|         200 | 2002-07-01 | 2006-12-31 | AC_ACCOUNT |            90 |
+-------------+------------+------------+------------+---------------+

1 Ответ

1 голос
/ 29 января 2020

Вы можете использовать следующее, используя дополнительный выбор, чтобы получить текущее / последнее задание, и EXISTS, чтобы проверить, работал ли сотрудник в качестве торгового представителя в прошлом:

SELECT jh.* 
FROM job_history jh INNER JOIN (
  SELECT EMPLOYEE_ID, MAX(START_DATE) AS START_DATE 
  FROM job_history 
  GROUP BY EMPLOYEE_ID
) cj ON jh.EMPLOYEE_ID = cj.EMPLOYEE_ID AND jh.START_DATE = cj.START_DATE
WHERE EXISTS (
  SELECT 1
  FROM job_history
  WHERE EMPLOYEE_ID = jh.EMPLOYEE_ID AND JOB_ID = 'SA_REP' AND START_DATE < jh.START_DATE
)

демо на dbfiddle.uk

...