Я извлекаю данные из трех отдельных связанных с работником таблиц, все из которых объединены в SSN. Поскольку некоторые сотрудники несколько раз переходили в компанию, у них есть несколько дат аренды/разделения в системе, поэтому, когда я вытягиваю из этой таблицы даты найма, она дублирует строку по количеству дат аренды/разделения в системе. Вот выборка данных, как это вытащил:SQL Server 2012 - MAX() Функция
SSN Name Pay_Date Hire_Date
123456789 John Doe 5/1/2012 1/1/2001
123456789 John Doe 5/1/2012 2/5/2005
123456789 John Doe 5/1/2012 3/1/2012
123456789 John Doe 5/15/2012 1/1/2001
123456789 John Doe 5/15/2012 2/5/2005
123456789 John Doe 5/15/2012 3/1/2012
123456789 John Doe 5/29/2012 1/1/2001
123456789 John Doe 5/29/2012 2/5/2005
123456789 John Doe 5/29/2012 3/1/2012
Запрос:
SELECT
SSN, Name, Pay_Date, Hire_Date
FROM Personnel as PER
LEFT JOIN Payroll as PAY on PER.SSN = PAY.SSN
LEFT JOIN HumanResources as HR on PER.SSN = HR.SSN
ORDER BY Pay_Date(DESC)
Для устранения строки с датами аренды 1/1/2001 и 2/5/2005, я попытался с помощью функции MAX следующим образом, не повезло. Я попытался использовать множество примеров, опубликованных в предыдущих разделах, связанных с MAX, но ничего не работает.
SELECT
SSN, Name, Pay_Date, MAX(Hire_Date)
FROM Personnel as PER
LEFT JOIN Payroll as PAY on PER.SSN = PAY.SSN
LEFT JOIN HumanResources as HR on PER.SSN = HR.SSN
GROUP BY SSN
ORDER BY Pay_Date(DESC)
Опять же, мне просто нужна строка с самой последней датой найма. Таким образом, результат должен выглядеть так:
SSN Name Pay_Date Hire_Date
123456789 John Doe 5/1/2012 3/1/2012
123456789 John Doe 5/15/2012 3/1/2012
123456789 John Doe 5/29/2012 3/1/2012
Можете ли вы показать базовые таблицы для вашего примера? – Ndech