我从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