【发布时间】:2011-01-27 20:24:50
【问题描述】:
在我的员工历史记录表中,我试图找出薪水是多少,然后又变成了什么。每次薪水更改都会插入一条新记录,因为新薪水被认为是新的“工作”,因此它附有开始和结束日期。我可以很好地选择所有这些日期,但我不断重复,因为我似乎无法将当前记录与该员工最近的先前记录进行比较。 (如果有道理的话)
我希望结果类似于:
Employe Name, OldSalary, NewSalary, ChangeDate(EndDate)
Joe 40,000 42,000 01/10/2011
示例数据看起来像
EmployeeHistId EmpId Name Salary StartDate EndDate
1 45 Joe 40,000.00 01/05/2011 01/10/2011
2 45 Joe 42,000.00 01/11/2011 NULL
3 46 Bob 20,000.00 01/12/2011 NULL
【问题讨论】:
-
你能指望每个 EmpID 只有一个
NULLEndDate 吗? -
但是你可以让所有 EndDates 都为空(员工离开),这会使它作为谓词无效。哪个版本的 SQL Server?
-
只有每个员工最近的记录才会有一个空结束日期。它的 sql server 2005。
标签: sql sql-server tsql