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

Oracle SQL, jak grupować według, ale mieć wiele wierszy, jeśli grupa zostanie powtórzona w późniejszym terminie

To jest problem luk i wysp. Istnieją różne podejścia, ale prosty wykorzystuje różnicę numerów wierszy:

with paaf as (<your first query here>
     )
select paaf.assignment_id,
       paaf.position_id,
       min(paaf.effective_start_date) as effective_start_date,
       max(paaf.effective_end_date) as effective_end_date
from (select paaf.*,
             row_number() over (order by effective_start_date) as seqnum,
             row_number() over (partition by position_id order by effective_start_date) as seqnum_p
      from paaf
     ) paaf
group by (seqnum - seqnum_p), position_id, assignment_id;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GROUP BY bez funkcji agregującej

  2. Dodano datę i datę modyfikacji dla audytu tabeli Oracle

  3. SQL wiele kolumn w klauzuli IN

  4. Identyfikowanie rywalizacji sekwencji ASH w RAC

  5. Błąd instalatora klienta Oracle 12c