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

Khó khăn SQL JOIN - dường như cần một cách giới hạn các hàng trong một điều kiện nối

Oracle 9i +, sử dụng ROW_NUMBER:

SELECT x.project_id,
       x.title,
       x.event_date,
       x.event_desc
  FROM (SELECT p.project_id,
               p.title,
               e.event_date,
               e.event_desc,
               ROW_NUMBER() OVER(PARTITION BY p.project_id
                                     ORDER BY e.event_date) AS rank
          FROM PROJECT p
     LEFT JOIN EVENT e ON e.project_fk = p.project_id
                      AND e.event_type = 301
         WHERE p.project_id IN (101,102,103)) x
 WHERE x.rank = 1

Oracle 9i +, Sử dụng WITH và ROW_NUMBER:

WITH example AS (
     SELECT p.project_id,
            p.title,
            e.event_date,
            e.event_desc,
            ROW_NUMBER() OVER(PARTITION BY p.project_id
                                  ORDER BY e.event_date) AS rank
       FROM PROJECT p
  LEFT JOIN EVENT e ON e.project_fk = p.project_id
                   AND e.event_type = 301
      WHERE p.project_id IN (101,102,103))
SELECT x.project_id,
       x.title,
       x.event_date,
       x.event_desc
  FROM example x
 WHERE x.rank = 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ngăn chặn SQL Injection với truy vấn SQL ALTER USER động

  2. Lỗi tìm nạp bảng trả về trình tự từ hàm Oracle trong C # trong đó hàm sử dụng dblink cho SQL Server

  3. Đang đợi một công việc đã gửi kết thúc trong Oracle PL / SQL?

  4. cách tốt nhất để di chuyển ứng dụng biểu mẫu windows từ máy chủ sql sang oracle

  5. Chuyển Oracle PL / SQL sang Snowflake mà không cần JavaScript