Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle DB में पुनरावर्ती अतिव्यापी दिनांक सीमाओं के साथ रिकॉर्ड कैसे खोजें?

आप रिकॉर्ड के लिए समूह पहचानकर्ता असाइन कर सकते हैं। विचार उन अभिलेखों को ढूंढना है जो ओवरलैप नहीं करते हैं, और उन्हें समूह की शुरुआत के रूप में उपयोग करते हैं।

निम्नलिखित प्रत्येक रिकॉर्ड के लिए समूह निर्दिष्ट करता है:

  select t.*, sum(group_start) over (order by dstart) as grp
  from (select t.*,
               (case when not exists (select 1
                                      from t t2
                                      where t2.dstart < t.dstart and t2.dend >= t.dstart
                                     )
                     then 1 else 0
                end) group_start
        from t
       ) t

यदि आप केवल एक निश्चित रिकॉर्ड के लिए समूह चाहते हैं तो कई तरीके हैं, जैसे:

with overlaps as (
      <query above>
     )
select o.*
from overlaps o
where o.grp = (select o2.grp from overlaps o2 where o2.id = ???);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle डेटाबेस में तत्काल निष्पादन के साथ ALTER और DROP तालिका DDL

  2. Oracle VM Virtual Box के साथ एक वर्चुअल मशीन बनाना

  3. Oracle में दिए गए स्ट्रिंग से विशिष्ट तार निकालने के लिए

  4. P_AA को कॉल करने में गलत संख्या या तर्कों के प्रकार

  5. एक ट्रिगर बनाना