2016-03-20 16 views
0

Ben bir tablo çalışanı 050.498 için bu kayıtta geç tab_assignment_xxtarihleri ​​bir mola ile Masa ve iki 31-Aralık-4712

date_from date_end  action person_number 
01-Apr-2014 31-Jul-2014 HIRE 050498 
01-Aug-2014 31-Jan-2015 OTHERS 050498 
01-Feb-2015 30-Jun-2015 OTHERS 050498 
01-Jul-2015 15-Nov-2015 OTHERS 050498 
16-Nov-2015 **31-Dec-4712** OTHERS 050498 
01-Jan-2016 **31-Dec-4712** OTHERS 050498 

iki tarih 31-dec-12 ve bir ara ile vardır tarih. Örneğin, 01-Jan-16'dan önce, 31 Aralık 2015 ve 31 Aralık-12 değil.

Tüm tabloda bu tür kesmeler bulmak istiyorum.

cevap

1

Şu an el altında hiçbir Oracle var ama bu işi yapmalıdır:

hayır "Aşağıdaki" satır var tüm satırları bulur ama bir şu satırları yok elbette son satırı (dışlar thats neden

select * 
    from tab_assignment_xx a 
where not exists (select 1 
        from tab_assignment_xx b 
        where a.date_end + 1 = b.date_from 
         and a.person_number = b.person_number) 
    and a.date_from != (select max(date_from) 
         from tab_assignment_xx c 
         where a.person_number = c.person_number); 

Belki tarihleri ​​TRUNC() eklemek gerekir)) - sürelerini göz ardı etmek için sütunlar türüne bağlıdır, aynı sonuncu.

Bulunan sıra:

+------------+------------+ 
| date_from | date_end | 
+------------+------------+ 
| 2015-11-16 | 4712-12-31 | 
+------------+------------+ 
İlgili konular