回答
我可以的路要走,但我相信下面的语句满足您的要求
SELECT *
FROM (
SELECT e.EmployeeID, h.FromDate, h.ToDate
, rn = ROW_NUMBER() OVER (PARTITION BY e.EmployeeID ORDER BY DesignationID DESC)
FROM employee e
INNER JOIN history h ON h.EmployeeID = e.EmployeeID
) eh
WHERE rn = 1
历史表包含他们加入后第一天的员工退出历史记录。在每次指定更改时,新的行会添加到历史记录表中。我想要的是获得结果集的第一行,以便找到员工加入的日期,因此,当我接受员工表和历史表的连接时,它会显示同一员工的多行“FromDate”第一行决定加入日期... – 2012-02-14 11:27:49
我试图运行您的查询,但它给了我以下错误'列'EmployeeID'多次指定为'eh'。' – 2012-02-14 11:28:51
@john - 您应该替换'SELECT *括号内的列与您想要返回的列。我编辑了我的答案。查询应该现在运行没有问题,但我没有包含*所有*列根据您的示例。 – 2012-02-14 11:33:20
不知道你在找什么,但尝试这样的事情(无子查询需要,并应在大多数DBMS工作,尽管它看起来像你的运行SQL Server ):
select t1.DisignationHistoryIDs, t1.employeeId, t1.fromDate from history t1
left join history t2
on t1.employeeId = t2.employeeId and t1.fromDate > t2.fromDate
where t2.fromDate is null
这应该工作得到最早的从日期。要获得最新的日期,只需将>
更改为<
即可。
我已更新问题 – 2012-02-14 09:32:46
试试这个,它应该工作。 – 2012-02-14 09:50:17
看不清你在问什么。突出显示的ID只是唯一的事件。所以,你可以做到这一点很容易:
SELECT DISTINCT EmployeeID FROM MyTable
distinct在这里不会帮助 – 2012-02-14 09:32:37
DISTINCT会给你完整的黄色突出显示的ID列表。这就是你要求的。如果你可以更清楚你想做什么,也许我可以提出另一个建议。 – njr101 2012-02-14 09:33:51
尝试:
select * from
(select t.*,
row_number() over (partition by EmployeeID order by FromDate) as rn) sq
where rn = 1
这是我最初发布的,但它不适用于ID的256,257。 – 2012-02-14 10:03:43
应该适用于256而不是257,如截图所示。这一切都取决于约翰张贴一些澄清,他**实际**想要什么...... – 2012-02-14 10:13:49
- 1. Oracle从结果集中获得第一个记录
- 2. 获得一个随机记录从一组结果
- 3. 从记录获取一个记录集
- 4. 如何获得第一个记录和最后一个记录
- 5. 获得第一个记录从两个表
- 6. 如果数据集结束,则返回第一条记录
- 7. 如何从Jena SPAQL结果集中获取第一个元素
- 8. Play&Ebean - 获得第一笔记录
- 9. 获得一个结果从LINQ声明
- 10. Mongoid - 如何获得第二个记录?
- 11. 从第一记录集访问数据
- 12. 如何在订购后获得结果集中的第一行?
- 13. 从RxJava获得2个观察结果中的一个结果
- 14. 如何获得第一条记录了每个组从结果使用GROUP BY命令
- 15. 从SelectMethod保存第二个结果集
- 16. 如何从我的SQL中获得第二个结果,并保留第一个结果
- 17. SQL UNION没有显示第2个结果集的结果,如果第一个结果集是空的
- 18. 从结果集删除记录,如果一个计算字段在MySQL是0
- 19. 从第二张表中获得最后一条记录
- 20. 只有第一次获得一个记录卡夫卡消费者获得记录?
- 21. 如果记录集=无,我得到一个错误
- 22. SQL:如果另一个结果集记录了该ID,如何从CTE中删除记录
- 23. 如何从BeautifulSoup结果获得第三个链接
- 24. 在xpath结果集中获取第一个节点
- 25. 获得独特结合记录从一列在SQL
- 26. 在Google语音识别中获得第一个结果
- 27. SQL Server在给定日期之前获得第一个结果
- 28. 查询谷歌获得第一个图像结果
- 29. 加入的ID或空并获得第一个结果
- 30. Laravel - Eager Loading只获得第一个结果
所以你要组对雇员但你用什么来决定'第一'是什么? – Ray 2012-02-14 09:23:40
@NeilKnight它看起来像我正确地要求代码,但它不是这样,我已经与秩尝试,但不能安静得到结果 – 2012-02-14 09:24:18
@射线我想获得'FromDate',但有重复的行不是不受欢迎的,但每个重复行的第一行的'FromDate'将用作应用程序中的加入日期 – 2012-02-14 09:26:40