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

Намиране на най-новия договор за всеки акаунт

Използвайте ROW_NUMBER :

SELECT account, "date", "value"
FROM
(SELECT 
  account, "date", "value",
  ROW_NUMBER() OVER (PARTITION BY account ORDER BY "date" DESC) rn
 FROM yourTable
) t
WHERE rn=1;

Имайте предвид, че вече изтритият отговор, даден от @NiVeR, би бил достатъчен, ако искаме само максималната дата за всеки акаунт. Ако се нуждаем и от стойността или като цяло от други колони от всеки запис, тогава ще трябва да направим допълнително свързване или да използваме номера на реда, както направих по-горе.

Вижте Демо на SQL Fiddle .



  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 sql

  2. Как да убия всички активни и неактивни сесии на оракул за потребителя

  3. Грешки при инсталиране на jdk 1.7 в linux

  4. pl/sql - Използване на динамична заявка в съхранена процедура

  5. Изберете минимум две дати