Using SQL Server, I have a SQL view that I use to integrate data into our financial software. The view currently looks like this, returning one row per employee_id:
SELECT TOP (100) PERCENT dbo.EmployeeMaster.Employee_ID, dbo.EmployeeMaster.Branch_ID, dbo.EmployeeMaster.ModifyDatetime AS EmployeeMasterModified,
dbo.EmployeePRMaster.ModifyDatetime AS PRMasterModified, dbo.EmployeePRLocal.ModifyDatetime AS EmployeePRLocalModified, dbo.EmployeePRState.ModifyDatetime AS EmployeePRStateModified,
dbo.FMT_CLEAN_STRING(dbo.EmployeeMaster.First_Name, 'abcdefghijklmnopqrstuvwxyz') AS First_Name_Cleaned, dbo.FMT_CLEAN_STRING(dbo.EmployeeMaster.Last_Name, 'abcdefghijklmnopqrstuvwxyz')
AS Last_Name_Cleaned, dbo.EmployeeMaster.Address1, dbo.EmployeeMaster.Address2, dbo.EmployeeMaster.City, dbo.EmployeeMaster.StateCode, dbo.EmployeeMaster.PostalCode,
dbo.EmployeeMaster.Country, dbo.EmployeeMaster.Phone, dbo.EmployeeMaster.Phone2, dbo.EmployeePRMaster.SocialSecurityNumber, dbo.EmployeePRMaster.Gender, dbo.EmployeePRMaster.MaritalStatus,
dbo.EmployeePRMaster.Birthdate, dbo.EmployeePRMaster.HireDate, dbo.EmployeePRMaster.HireDateAdjusted, dbo.EmployeePRMaster.CheckHandlingCode, dbo.EmployeePRMaster.FedExemptions,
dbo.EmployeePRMaster.FedFilingStatus, dbo.EmployeePRMaster.FedAdditionalWith, dbo.EmployeePRLocal.LocalCode, dbo.EmployeePRLocal.Exemptions, dbo.EmployeePRLocal.AdditionalAmount,
dbo.EmployeePRState.StateCode AS StateTaxCode, dbo.EmployeePRState.IsExemptBlind, dbo.EmployeePRState.IsExemptBlindSpouse, dbo.EmployeePRState.IsExemptOver65,
dbo.EmployeePRState.IsExemptSelf, dbo.EmployeePRState.IsExemptSpecial, dbo.EmployeePRState.IsExemptSpouse, dbo.EmployeePRState.IsExemptSpouse65, dbo.EmployeePRState.Dependents,
dbo.EmployeePRState.AdditionalAmount AS StateAdditional, dbo.CodePREthnicOrigin.Description, dbo.EmployeeMaster.Status, dbo.EmployeePRLocal.FilingStatus, dbo.OrderAssignment.End_Actual_Date
FROM dbo.EmployeeMaster LEFT OUTER JOIN
dbo.EmployeePRLocal ON dbo.EmployeeMaster.Employee_ID = dbo.EmployeePRLocal.Employee_ID INNER JOIN
dbo.EmployeePRMaster ON dbo.EmployeeMaster.Employee_ID = dbo.EmployeePRMaster.Employee_ID INNER JOIN
dbo.EmployeePRState ON dbo.EmployeeMaster.Employee_ID = dbo.EmployeePRState.Employee_ID INNER JOIN
dbo.CodePREthnicOrigin ON dbo.EmployeePRMaster.EthnicOrigin = dbo.CodePREthnicOrigin.Code INNER JOIN
dbo.OrderAssignment ON dbo.EmployeeMaster.Employee_ID = dbo.OrderAssignment.Employee_ID
WHERE (dbo.EmployeeMaster.ModifyDatetime > DATEADD(Day, - 14, GETDATE())) AND (dbo.EmployeeMaster.Branch_ID <> 'U') AND (dbo.EmployeeMaster.Status = '1') OR
(dbo.EmployeeMaster.Branch_ID <> 'U') AND (dbo.EmployeePRMaster.ModifyDatetime > DATEADD(Day, - 14, GETDATE())) OR
(dbo.EmployeeMaster.Branch_ID <> 'U') AND (dbo.EmployeePRLocal.ModifyDatetime > DATEADD(Day, - 14, GETDATE())) OR
(dbo.EmployeeMaster.Branch_ID <> 'U') AND (dbo.EmployeePRState.ModifyDatetime > DATEADD(Day, - 14, GETDATE()))
The OrderAssignment.End_Actual_date is a one-to-many and as such returns multiple rows. I want to get only the most recent date (per employee_id). I can accomplish this separately with the following query:
select TOP 1 Employee_ID,End_Actual_Date from OrderAssignment
Order by end_actual_date DESC
However, I'm stumped on how to basically combine the two. Thoughts?