sql >> Databáze >  >> RDS >> Oracle

Oracle získat maximální záznam

Můžete použít poddotaz, který získá max(process_date) :

select c1.b_id,
  c2.MaxDate
from table_a a
inner join table_b b
  on a.a_id = b.a_id
inner join table_c c1
  on b.b_id = c1.b_id
inner join
(
  select max(process_date) MaxDate
  from table_c
) c2
  on c1.process_date = c2.maxdate;

Viz SQL Fiddle s ukázkou

Nebo můžete použít row_number() :

select b_id, process_date
from 
(
  select c1.b_id,
    c1.process_date,
    row_number() over(partition by a.a_id order by c1.process_date desc) rn
  from table_a a
  inner join table_b b
    on a.a_id = b.a_id
  inner join table_c c1
    on b.b_id = c1.b_id
) 
where rn = 1

Viz SQL Fiddle s ukázkou



  1. Jak používat podmínku BETWEEN pomocí hlavního dotazu a dílčích dotazů

  2. java Hibernujte zbytečné dotazy na oddělené objekty

  3. Výjimka Java SQL:Uzavřená sada výsledků:další, i když se neuzavře ani připojení ani sada výsledků

  4. Použití 'OR' mezi klauzulemi HAVING a WHERE v MySQL?