Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Nhóm biến số nhị phân theo ID và ngày tối thiểu / tối đa

Từ Oracle 12, đây là loại sự cố MATCH_RECOGNIZE nhằm giải quyết:

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
)

Mà, đối với dữ liệu mẫu:

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;

Kết quả đầu ra:

db <> fiddle tại đây




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng Bí danh trong truy vấn dẫn đến lệnh không được kết thúc đúng cách

  2. Khung thực thể không thể cập nhật dữ liệu trong bảng bằng khóa tổng hợp (Oracle)

  3. Hiển thị đầu ra THỰC HIỆN Động Trong phạm vi pl / sql Từ sqlplus

  4. _gc_fusion_compression

  5. Các câu lệnh DDL kiểm tra đơn vị cần có trong một giao dịch