employee
列id(主キー)、* employee_name *を持つテーブルと、列* employee_id *(employee.idを参照する外部キー)、* start_date *(datetime)、* finish_date *(datetime)で呼び出される別のテーブルがありemployee_works
ます。
従業員テーブルのデータは次のとおりです。
**id** **employee_name**
1 employee A
2 employee B
3 employee C
4 employee D
5 employee E
6 employee F
7 employee G
employee_worksテーブル:
1 2010-01-01 00:00:00 NULL
2 2010-01-01 00:00:00 2010-01-10 10:00:00"
2 2010-01-13 00:00:00 2010-01-15 10:00:00"
2 2010-01-31 00:00:00 NULL
4 2010-02-18 00:00:00 2011-01-31 00:00:00"
6 2010-02-18 00:00:00 NULL
NULL値は、従業員がまだ働いていることを意味します。私は、従業員のリストを表示する単一のクエリを取得する必要があります。彼らが私たちと一緒に働いていた場合、私たちの会社でまだ働いている人、退職した人、可能であれば彼らが私たちと一緒に働いた期間。例:
id employee_name status
1 Employee A Still with us
3 Employee C Never worked
4 Employee D Left
私の試み:
SELECT emp.id,emp.name,
CASE
WHEN occ.finish_date is NULL and occ.start_date is NOT NULL THEN 'Still working'
WHEN occ.finish_date is NULL and occ.start_date is NULL THEN 'Never Worked'
WHEN occ.finish_date is NOT NULL and occ.start_date is NOT NULL THEN 'Left'
END
AS status
FROM employee AS emp
LEFT JOIN employee_works AS occ ON emp.id=occ.employee_id
GROUP BY emp.id, occ.finish_date
また、従業員が別の列で働いた合計日数を取得したいですか?