Oracle DB Query:仅比较最后两个插入的行?

时间:2014-09-29 14:04:25

标签: oracle

想象一下,如果我有一张如下表格:

DEPARTMENT_INFORMATION

Id      Dept_Id     Dept_Name   Date_time
---------------------------------------------
001     100         AAA         13-JUN-14
002     100         BBB         14-AUG-14
003     100         AAA         16-SEP-14

004     101         CCC         02-JUL-14
005     101         DDD         08-JUL-14
006     101         DDD         18-AUG-14

007     102         EEE         20-AUG-14
008     102         FFF         16-AUG-14
009     102         GGG         21-AUG-14

STEP -1:

我需要根据DEPT_ID(100,101,102)进行过滤,并根据DATE_TIME获取最后两个插入的列:

Id      Dept_Id     Dept_Name   Date_time
----------------------------------------------
002     100         BBB         14-AUG-14
003     100         AAA         16-SEP-14

005     101         DDD         08-JUL-14
006     101         DDD         18-AUG-14

007     102         EEE         20-AUG-14
009     102         GGG         21-AUG-14

STEP -2:

我需要比较DEPT_NAME以获得相同的DEPT_ID和 问题1:如果只有相同的DEPT_ID被显示.. 问题2:如果不同,DEPT_ID将被显示..

基本上需要两个问题:

EXPECTED_OUTPUT:

如果相同:

DEPT_ID 
--------
101

如果不同:

DEPT_ID
-------
100 
102

我如何实现这一目标?

基本上我尝试的是比较所有三个Dept_Name并显示所有三个是否有差异,反之亦然。 但我想只比较Dept_Name的最后两个插入记录和显示Dept_Id ..

1 个答案:

答案 0 :(得分:0)

以下查询可能会对您有所帮助:

select distinct Dept_Id
from  
( select * 
  from (select * from DEPARTMENT_INFORMATION order by Dept_Id) 
  order by Date_time ) 
where ROWNUM <= 2;