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

तालिका में प्रत्येक आईडी के लिए अधिकतम लगातार वर्ष खोजें (ओरेकल एसक्यूएल)

यह आपका वांछित परिणाम देगा:

select
  id,
  ayear,
  byear,
  yeardiff
from
(
  select
    a.id,
    a.year ayear,
    b.year byear,
    (b.year - a.year)+1 yeardiff,
    dense_rank() over (partition by a.id order by (b.year - a.year) desc) rank
  from
    years a
    join years b on a.id = b.id 
        and b.year > a.year
  where
    b.year - a.year = 
      (select count(*)-1
         from years a1
        where a.id = a1.id
             and a1.year between a.year and b.year)
)
where
  rank = 1

संपादित करें सबसे लंबे खिंचाव के प्रारंभ/समाप्ति वर्ष प्रदर्शित करने के लिए अपडेट किया गया।

SQLFiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्तंभ मान में एक मान खोजें जो अल्पविराम से अलग किए गए मानों को संग्रहीत करता है

  2. एसक्यूएल और पीएल/एसक्यूएल में एक स्ट्रिंग को उलटना एक उदाहरण

  3. ORA-12514 TNS:श्रोता वर्तमान में कनेक्ट डिस्क्रिप्टर में अनुरोधित सेवा के बारे में नहीं जानता है

  4. ORA-12704:कैरेक्टर सेट मिसमैच

  5. WHERE IN क्लॉज में उपयोग करने के लिए Oracle प्रक्रिया में मानों की एक सरणी भेजना