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

एक ही तारीख के एक रन के अंत में कुछ रिकॉर्ड्स को स्लाइड करना

यह जटिल है। सबसे पहले आपको लगातार दिनांक रिकॉर्ड खोजने होंगे, इसलिए

. के साथ
thedate     theid  thetype
2014-07-12   5001       59
2014-07-12   5002      101
2014-07-12   5003       88
2014-07-13   5004       10
2014-07-12   5005       60

आप 2014-07-12 को पहले तीन रिकॉर्ड के लिए एक घटना के रूप में और दूसरे को अंतिम रिकॉर्ड के लिए पहचानेंगे। दूसरे रिकॉर्ड को आपके परिणामों में #3 स्थान प्राप्त करना होगा, #5 नहीं।

आप पहले LAG . का उपयोग करके लगातार रिकॉर्ड को समूह कुंजी देकर इसे प्राप्त करते हैं पिछले रिकॉर्ड को देखने के लिए, इस प्रकार समूह परिवर्तन पर एक ध्वज बनाना, और फिर इन झंडों का संचयन करना।

select thedate, theid, thetype
from
(
  select 
    thedate, theid, thetype,
    sum(new_group) over (order by theid) as group_key
  from
  (
    select
      thedate, theid, thetype,
      case when lag(thedate) over (order by theid) = thedate then 0 else 1 as new_group
    from mytable
  ) marked
) grouped
order by 
  group_key,
  case when thetype = 101 then 1 else 0 end,
  theid;


  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. क्या JPQL में ऐसी कोई CASE अभिव्यक्ति है?

  3. SQL में कई मान कैसे हटाएं?

  4. डेटाबेस Oracle 10g से टेबल हटाएं

  5. JMeter JDBC पूल कॉन्फ़िगरेशन