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

एक क्रम में लापता तिथियां ढूँढना

अंतराल के साथ आईडी की एक सरल सूची प्राप्त करने के लिए, बिना किसी और विवरण के, आपको प्रत्येक आईडी को अलग से देखना होगा, और जैसा कि @mikey ने सुझाव दिया है कि आप महीनों की संख्या गिन सकते हैं और पहली और आखिरी तारीख देख सकते हैं कि कितने महीने जो फैले हुए हैं।

अगर आपकी टेबल में month . नाम का कॉलम है (date से इसकी अनुमति नहीं है जब तक कि यह एक उद्धृत पहचानकर्ता न हो) आप इसके साथ शुरू कर सकते हैं:

select id, count(month), min(month), max(month),
  months_between(max(month), min(month)) + 1 as diff
from your_table
group by id
order by id;

        ID COUNT(MONTH) MIN(MONTH) MAX(MONTH)       DIFF
---------- ------------ ---------- ---------- ----------
       123            8 01-JUN-14  01-JUL-15          14
       456            7 01-MAR-14  01-NOV-14           9
       789            7 01-MAR-14  01-SEP-14           7

फिर एक having . में, महीने की अवधि के साथ गिनती की तुलना करें खंड:

select id
from your_table
group by id
having count(month) != months_between(max(month), min(month)) + 1
order by id;

        ID
----------
       123
       456

यदि आपके पास वास्तव में एक आईडी के लिए एक महीने में कई रिकॉर्ड हो सकते हैं, और/या दर्ज की गई तारीख महीने की शुरुआत नहीं हो सकती है, तो आप तारीखों को सामान्य करने के लिए थोड़ा और काम कर सकते हैं:

select id,
  count(distinct trunc(month, 'MM')),
  min(trunc(month, 'MM')),
  max(trunc(month, 'MM')),
  months_between(max(trunc(month, 'MM')), min(trunc(month, 'MM'))) + 1 as diff
from your_table
group by id
order by id;

select id
from your_table
group by id
having count(distinct trunc(month, 'MM')) !=
  months_between(max(trunc(month, 'MM')), min(trunc(month, 'MM'))) + 1
order by 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. ORA-24247:ईमेल भेजते समय एक्सेस कंट्रोल लिस्ट (ACL) द्वारा नेटवर्क एक्सेस अस्वीकृत

  2. ओआरए-27154 / ओआरए-27146

  3. पोर्ट मान को बदलना configApplicationServer विशेषता वर्कलाइट

  4. Oracle को JDBC कॉल 3 प्रश्न चिह्न लौटाता है

  5. Oracle PL/SQL - तत्काल आउटपुट/कंसोल प्रिंटिंग के लिए टिप्स