Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Trudność SQL JOIN - wydaje się, że potrzebuje sposobu na ograniczenie wierszy w warunku złączenia

Oracle 9i+, używając 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+, używanie WITH i 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. Kolumny id Oracle RAW i JDBC

  2. Używając Oracle SQL, w jaki sposób jeden dzień wyprowadza numer tygodnia i dzień tygodnia?

  3. Pobieranie danych wyjściowych z dbms_output.get_lines za pomocą JDBC

  4. sql Optimizer dla dużej tabeli Db

  5. Błąd IO:Karta sieciowa nie mogła nawiązać połączenia - z Oracle 11gR2. Łączenie z programistą SQL