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

Sql - तारीख कनेक्ट होने पर पंक्तियों को मर्ज करना

आप इस तरह के तर्क का उपयोग sum . के साथ कर सकते हैं कुल और lag विंडो नीचे के रूप में कार्य करती है:

select clientid, min(startdate) as startdate, max(enddate) as enddate
  from
(
select tt.*, sum(grp) over (order by clientid, startdate) sm 
  from
(
  with t(clientid, startdate, enddate) as
  (
   select 1, date'2017-10-10', date'2017-10-12' from dual union all
   select 1, date'2017-10-12', date'2017-10-13' from dual union all
   select 1, date'2017-10-13', date'2017-10-17' from dual union all  
   select 1, date'2017-11-10', date'2017-11-17' from dual union all  
   select 1, date'2017-11-17', date'2017-11-23' from dual union all  
   select 1, date'2017-12-12', date'2017-12-14' from dual union all
   select 2, date'2017-11-10', date'2017-11-15' from dual union all  
   select 2, date'2017-12-01', date'2017-12-02' from dual union all  
   select 2, date'2017-12-02', date'2017-12-05' from dual
  )
 select clientid, 
        decode(nvl(lag(enddate) over 
                   (order by enddate),startdate),startdate,0,1) 
                   as grp, --> means prev. value equals or not 
        row_number() over (order by clientid, enddate) as rn, startdate, enddate
    from t
) tt
order by rn
) 
group by clientid, sm 
order by clientid, enddate;

CLIENTID    STARTDATE   ENDDATE
----------  ----------  ----------
1           10.10.2017  17.10.2017
1           10.11.2017  23.11.2017
1           12.12.2017  14.12.2017
2           10.11.2017  15.11.2017
2           01.12.2017  05.12.2017

Rextester डेमो

बेहतर समझ के लिए चरण दर चरण क्वेरी निष्पादन



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. EF और TransactionScope SQL सर्वर और Oracle दोनों के लिए DTC में वृद्धि/फैले हुए बिना?

  2. Oracle के साथ और MATERIALIZE संकेत कार्यों के लिए स्वायत्त लेनदेन के रूप में कार्य करता है

  3. ओरेकल:क्या चयन सूची में उपश्रेणियों के साथ समानांतर निष्पादन का उपयोग न करने का कोई तार्किक कारण है?

  4. तीन टेबल पर शामिल होने का उपयोग कैसे करें

  5. फाइल करने के लिए एक्सएमएल कैसे लिखें (पीएल/एसक्यूएल)?