0

私はOracle SQLの初心者なので、ご容赦ください。

私は2つのテーブルを持っています:

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

しかし、うまくいきません。何か案は?

4

3 に答える 3

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

于 2013-04-09T15:54:13.407 に答える
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


スキームを準備してくれたDazzLに感謝します:-)

于 2013-04-09T15:54:22.667 に答える
0

こんにちは、いつでも追加された最新の日付を取得できます。次の方法で実行できます。

ct.eq_nbr,ct.size,ct.date を gate_tran から選択 gt 内部結合コンテナー ct ここで、gt.eq_nbr = ct.eq_nbr および date=(gate_tran から max(date) を選択)

于 2013-04-09T15:57:31.803 に答える