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

SQL Oracle - फ़िल्टर के साथ लगातार पंक्तियों का संयोजन

इस सवाल को पूछे हुए चार साल बीत चुके हैं। लेकिन Oracle ने MATCH_RECOGNIZE को जोड़ा Oracle 12c का खंड, और इसने समाधान को सरल बना दिया।

SELECT
  foo_id, high_speed, speed,
  NVL(DateFromZ, DateFrom) DateFrom,
  NVL(DateToZ, DateTo) DateTo
FROM test
MATCH_RECOGNIZE (
  ORDER BY RecordId
  MEASURES
    FIRST(zeros.DateFrom) AS DateFromZ,
    FINAL LAST(zeros.DateTo) AS DateToZ,
    COUNT(*) AS cnt
  ALL ROWS PER MATCH WITH UNMATCHED ROWS
  PATTERN (zeros+)
  DEFINE
    zeros AS zeros.speed = 0
)
WHERE speed > 0 OR cnt = 1
ORDER BY RecordId;

आउटपुट:

+--------+------------+-------+------------+------------+
| FOO_ID | HIGH_SPEED | SPEED |  DATEFROM  |   DATETO   |
+--------+------------+-------+------------+------------+
|     12 |         60 |    10 | 09/11/2011 | 10/11/2011 |
|     13 |         20 |    20 | 11/11/2011 | 11/11/2011 |
|     12 |          0 |     0 | 13/11/2011 | 14/11/2011 |
|     12 |         70 |    50 | 15/11/2011 | 26/11/2011 |
|     12 |         40 |    40 | 09/11/2011 | 09/11/2011 |
|     13 |         25 |    20 | 09/11/2011 | 09/11/2011 |
|     12 |          0 |     0 | 15/11/2011 | 19/11/2011 |
|     12 |         20 |    10 | 12/11/2011 | 12/11/2011 |
+--------+------------+-------+------------+------------+

db<>fiddle पर डेमो ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. VBA स्क्रिप्ट निष्पादित करते समय अनिर्दिष्ट रन टाइम त्रुटि

  2. पेजिंग विकल्प, डेटाबेस पर या वेब एप्लिकेशन में

  3. एंटिटी फ्रेमवर्क ओरेकल और एसक्यूएल सर्वर - डेटाबेस स्वतंत्र एप्लिकेशन कैसे बनाएं

  4. टाइम ज़ोन समय के साथ TIMESTAMP(6) की सूची का औसत

  5. ओरेकल में अलग CURRENT_TIMESTAMP और SYSDATE