仅选择第二条记录

时间:2016-11-17 23:22:10

标签: oracle

我有一个我正在使用的大型数据集。但为了简化,假设我有一个这样的数据集:

Name  |  Age  |  Hire_Date  |  Manager
---------------------------------------
Bob   |  24   | 01/01/2016  |  Mark
Sue   |  31   | 01/01/2014  |  Fred
Mark  |  37   | 01/01/2011  |  Dawn  <----
Mark  |  37   | 01/01/2011  |  Cindy <----
Jean  |  29   | 01/01/2015  |  Larry
Arron |  47   | 01/01/2004  |  Todd

我在第3和第4行旁边放了箭头,以显示我需要隔离的内容。请注意Mark的经理如何从Dawn变为Cindy。我想选择此数据集,但只选择与Mark对应的两个记录中的一个。我想选择第二个,经理是Cindy。

我的数据集非常大,这种情况只发生几次,其中有两个记录如上,只需要选择第二个记录。有没有办法在Oracle中执行此操作,并且仅在示例情况下选择两个记录中的第二个,并包括其他常规记录?

2 个答案:

答案 0 :(得分:0)

假设还有其他信息:

select d.Name, d.Age, d.Hire_Date, max(ManagerId)
from mydata d
group by d.Name, d.Age, d.Hire_Date

更具体地说,您可能想要加入一个表格,该表格的日期字段显示该员工何时被分配给该经理,然后您只需使用分配日期的最大值。

无论哪种方式,都需要更多信息。

编辑: 您肯定需要其他信息。至少,您需要一个日期字段,指示经理何时成为员工的经理。对于Mark的两行,Cindy的经理生效日期字段晚于Dawn。

答案 1 :(得分:0)

select * from table A , table B
where A.name = B.name  -- add extra conditions to match if you need
and  A.rowid >= B.rowid 

以上情况应该有效;但我们需要知道你为什么需要它。同样,我需要知道是否需要重复两次以上的事情。