I am trying to find out what the most recent Location and job title was of all the Terminated employees.Information is in 3 tables, the common field is EmployeeID:
When an employee is terminated then either there is a new Current Status Record with the Status Code of 'Terminated' or there is an end date in all the tables.
Table_Job[for job title] Fields:EmployeeID,JobStartDate,JobEndDate,JobCurrentFlag,JobTitle
Table_Location[for Location]Fields:EmployeeID,LocationStartDate,LocationEndDate,LocationCurrentFlag,LocationCode
Table_Status[for Status Code...in this case Terminated]Fields:EmployeeID,StatusStartDate,StatusEndDate, StatusCurrentFlag, StatusCode
Table_Employee[for EmployeeName]Fields:EmployeeID,EmployeeName
-------------------------------
SELECT DISTINCT
E.EmployeeName, Tj.JobTitle, Tl.LocationCode,Ts.StatusCode
FROM Table_Employee E INNER JOIN
Table_Status Ts ON
E.EmployeeID = Ts.EmployeeID INNER JOIN
Table_Job Tj ON
Ts.EmployeeID = Tj.EmployeeID INNER JOIN
Table_Location Tl ON
Ts.EmployeeID = Tl.EmployeeID AND
Tj.EmployeeID = Tl.PEmployeeID
WHERE (Ts.StatusCode = 'Terminated') AND
(Ts.StatusCurrentFlag = 1) AND
(Tj.JobCurrentFlag = 1) AND
(Tl.LocationCurrentFlag = 1) OR
(NOT (Ts.StatusEndDate = NULL)) AND
(NOT (Tj.JobEndDate = NULL)) AND
(NOT (Tl.LocationEndDate = NULL))
When an employee is terminated then either there is a new Current Status Record with the Status Code of 'Terminated' or there is an end date in all the tables.
Table_Job[for job title] Fields:EmployeeID,JobStartDate,JobEndDate,JobCurrentFlag,JobTitle
Table_Location[for Location]Fields:EmployeeID,LocationStartDate,LocationEndDate,LocationCurrentFlag,LocationCode
Table_Status[for Status Code...in this case Terminated]Fields:EmployeeID,StatusStartDate,StatusEndDate, StatusCurrentFlag, StatusCode
Table_Employee[for EmployeeName]Fields:EmployeeID,EmployeeName
-------------------------------
SELECT DISTINCT
E.EmployeeName, Tj.JobTitle, Tl.LocationCode,Ts.StatusCode
FROM Table_Employee E INNER JOIN
Table_Status Ts ON
E.EmployeeID = Ts.EmployeeID INNER JOIN
Table_Job Tj ON
Ts.EmployeeID = Tj.EmployeeID INNER JOIN
Table_Location Tl ON
Ts.EmployeeID = Tl.EmployeeID AND
Tj.EmployeeID = Tl.PEmployeeID
WHERE (Ts.StatusCode = 'Terminated') AND
(Ts.StatusCurrentFlag = 1) AND
(Tj.JobCurrentFlag = 1) AND
(Tl.LocationCurrentFlag = 1) OR
(NOT (Ts.StatusEndDate = NULL)) AND
(NOT (Tj.JobEndDate = NULL)) AND
(NOT (Tl.LocationEndDate = NULL))