我從3個單獨的員工相關表中提取數據,所有表都加入了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和2005年2月5日的行,我嘗試使用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 2014-09-03 17:43:33