【发布时间】:2011-03-06 04:01:28
【问题描述】:
假设我有一个名为 Customer 的表,定义如下:
Id Name DepartmentId Hired
1 X 101 2001/01/01
2 Y 102 2002/01/01
3 Z 102 2003/01/01
我想检索每个部门最后一次招聘的日期。
显然我会这样做
SELECT c.DepartmentId, MAX(c.Hired)
FROM Customer c
GROUP BY c.DepartmentId
返回:
101 2001/01/01
102 2003/01/01
但是,如果我想返回所雇用人员的姓名,我该怎么办? IE。我想要这个结果集:
101 2001/01/01 X
102 2003/01/01 Z
请注意,以下内容不起作用,因为它将返回三行而不是我要查找的两行:
SELECT c.DepartmentId, c.Name, MAX(c.Hired)
FROM Customer c
GROUP BY c.DepartmentId
我不记得看到过实现此目的的查询。
注意:加入 Hired 字段是不可接受的,因为不能保证准确。
【问题讨论】:
-
不相关的问题:可能也不适合加入名称字段。名称不是唯一的。
-
嵌套选择是你的朋友。
标签: sql sql-server