答案 0 :(得分:2)
这个怎么样?
SELECT Employee, MAX(Resignation) Resignation
FROM table
WHERE Resignation IS NOT NULL
GROUP BY Employee
或者,如果您的表格列数超出了您的显示范围,
SELECT a.*
FROM table a
JOIN (
SELECT Employee, MAX(Resignation) Resignation
FROM table
WHERE Resignation IS NOT NULL
GROUP BY Employee
) b ON a.Employee = b.Employee AND a.Resigation = b.Resignation
这是"查找具有极值的详细信息行"查询模式。
答案 1 :(得分:0)
更新了对问题的重新解释:
我认为你的意思是:
返回当前已辞职的所有员工的最近辞职日期。目前已辞职的定义为"具有所有相同的员工记录,并为该员工填写辞职日期"。具有NULL辞职日期的单个员工记录表示员工仍然受雇;无论他们多少次辞职!
这可以使用exists
correlated subquery
来完成。
和max
以及group by
首先,我们会列出所有未辞职的员工。 然后我们将我们的全套资料与未辞职的员工进行比较,只保留员工不在未辞职的员工名单中,接下来我们按员工分组并获得最大辞职。
SELECT Employee, Max(Resignation) Resignation
FROM Table A
WHERE NOT EXISTS (SELECT 1
FROM Table B
WHERE A.Employee = B.Employee
and B.Resignation is null) --Cooelation occurs here Notice how A
GROUP BY Employee
Coolation在WHERE A.Employee = B.Employee
行发生,因为A.EMPLOYEE指的是从TABLE A
移除table B
一级的表格。
非常确定有一种方法可以通过apply join进行此操作;但我还不熟悉那种语法。