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

Oracle pobierz wiersz, w którym zmieniła się wartość kolumny

Możesz użyć LAG() funkcja okna, aby zajrzeć do poprzedniego wiersza i porównać go. Jeśli Twoje dane to:

create table t2 (
  id number(6),
  cctr varchar2(10),
  date1 date
);

insert into t2 (id, cctr, date1) values (1, '2C', date '2018-08-01');
insert into t2 (id, cctr, date1) values (2, '2C', date '2018-07-02');
insert into t2 (id, cctr, date1) values (3, '2C', date '2017-05-04');
insert into t2 (id, cctr, date1) values (4, '2B', date '2017-03-02');
insert into t2 (id, cctr, date1) values (5, '2B', date '2017-01-01');
insert into t2 (id, cctr, date1) values (6, 'UC', date '2016-11-23');

Wtedy zapytanie będzie wyglądało następująco:

select * from t2 where date1 = (
  select max(date1)
    from (
    select 
      id, date1, cctr, lag(cctr) over(order by date1 desc) as prev
      from t2
    ) x  
    where prev is not null and cctr <> prev
);

Wynik:

ID       CCTR        DATE1    
-------  ----------  -------------------
4        2B          2017-03-02 00:00:00  


  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 Przeszukaj wszystkie tabele ciągu z kolumną BLOB

  2. Korzystasz z usługi sieciowej z PL/SQL:UTL_DBWS czy APEX_WEB_SERVICE?

  3. Pobierz obraz z bazy danych Oracle

  4. Oracle SQL to_date &to_timestamp ORA-01858:znaleziono znak nienumeryczny w miejscu, w którym oczekiwano wartości liczbowej &ORA-01850:godzina musi wynosić od 0 do 23

  5. Zawsze pokazywać miejsca dziesiętne w SQL?