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

आईडी और न्यूनतम/अधिकतम तिथियों द्वारा बाइनरी वैरिएबल को समूहीकृत करना

Oracle 12 से, यह एक प्रकार की समस्या है जो MATCH_RECOGNIZE . है हल करने का इरादा है:

SELECT *
FROM   table_name
MATCH_RECOGNIZE (
  PARTITION BY Emp_ID
  ORDER     BY dt
  MEASURES
    FIRST(dt) AS min_date,
    LAST(dt)  AS max_date,
    MATCH_NUMBER() AS group_number
  PATTERN (one+)
  DEFINE
    one AS dummy = 1
)

जो, नमूना डेटा के लिए:

CREATE TABLE table_name ( dt, Emp_ID, Dummy ) AS
SELECT DATE '2021-01-01', 5, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-02', 5, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-03', 5, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-04', 5, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-05', 5, 0 FROM DUAL UNION ALL
SELECT DATE '2021-01-06', 5, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-07', 5, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-01', 8, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-02', 8, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-03', 8, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-04', 8, 0 FROM DUAL UNION ALL
SELECT DATE '2021-01-05', 8, 0 FROM DUAL UNION ALL
SELECT DATE '2021-01-06', 8, 0 FROM DUAL UNION ALL
SELECT DATE '2021-01-07', 8, 1 FROM DUAL;

आउटपुट:

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. कॉलम द्वारा Oracle SQL समूह गिनती के साथ लेकिन केवल अगर कॉलम शून्य या 0 . है

  2. कुछ तालिका के साथ जुड़ने पर अद्यतन क्वेरी के साथ सिंटैक्स त्रुटि

  3. TO_DATE फ़ंक्शन समय क्षेत्र पार्स त्रुटि

  4. sql क्वेरी में केस एक्सप्रेशन ठीक से काम नहीं कर रहा है

  5. Oracle में LOCALTIMESTAMP () फ़ंक्शन