Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle SQL заявка:Извличане на най-новите стойности за група въз основа на времето

Предвид тези данни...

SQL> select * from qtys
  2  /

        ID TS                      QTY
---------- ---------------- ----------
         1 2010-01-04 11:00        152
         2 2010-01-04 11:00        210
         1 2010-01-04 10:45        132
         2 2010-01-04 10:45        318
         4 2010-01-04 10:45        122
         1 2010-01-04 10:30          1
         3 2010-01-04 10:30        214
         2 2010-01-04 10:30       5515
         4 2010-01-04 10:30        210

9 rows selected.

SQL>

... следната заявка дава това, което искате ...

SQL> select x.id
  2         , x.ts as "DATE"
  3         , x.qty as "QUANTITY"
  4  from (
  5      select id
  6             , ts
  7             , rank () over (partition by id order by ts desc) as rnk
  8             , qty
  9      from qtys ) x
 10  where x.rnk = 1
 11  /

        ID DATE               QUANTITY
---------- ---------------- ----------
         1 2010-01-04 11:00        152
         2 2010-01-04 11:00        210
         3 2010-01-04 10:30        214
         4 2010-01-04 10:45        122

SQL>

По отношение на вашите допълнителни изисквания, можете да приложите допълнителни филтри към външната клауза WHERE. По същия начин можете да присъедините допълнителни таблици към вградения изглед като всяка друга таблица.



  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

  2. Коригиране на грешка „ORA-01790:изразът трябва да има същия тип данни като съответния израз“

  3. Използване на низ съдържа функция в Oracle SQL заявка

  4. Dynamic Oracle Pivot_In_Clause

  5. как да създадете таблица в oracle