我在Oracle SQL中有点新手,所以请耐心等待。
我有两张桌子:
Contaiers:
===========
eq_nbr,
size,
date
Gate Transactions (gate_tran):
==================
eq_nbr,
date,
trucker_id
每个容器有很多门事务,所以我需要特定eq_nbr的最后一条记录。
我正在思考类似的事情:
select ct.eq_nbr, ct.size, ct.date,
(select trucker_id last over (partition by gt.eq_nbr) from gate_tran gt where
gt.eq_nbr = ct.eq_nbr)
from
containers ct
但它不起作用。有什么想法吗?
答案 0 :(得分:1)
select *
from (select ct.eq_nbr, ct.size, gt.date, gt.trucker_id,
row_number() over (partition by ct.eq_nbr order by gt.date desc ) rn
from containers ct
inner join gate_tran gt on gt.eq_nbr = ct.eq_nbr)
where rn = 1;
将获得每个eq_nbr的最新日期。例如http://sqlfiddle.com/#!4/5f52f/1
答案 1 :(得分:0)
select
eq_nbr, ct.size, ct.date,
max(gt.date) as last_date,
min(trucker_id) keep (dense_rank first order by gt.date desc) as last_trucker_id
from
containers ct
join gate_trans gt using(eq_nbr)
group by eq_nbr, ct.size, ct.date
fiddle
感谢DazzaL准备计划: - )
答案 2 :(得分:0)
您好,您可以随时添加最新日期。您可以这样做:
从gate_tran gt内部连接容器ct中选择ct.eq_nbr,ct.size,ct.date,其中gt.eq_nbr = ct.eq_nbr和date =(从gate_tran中选择max(date))