0

wip_discrete_jobs_v から * を選択しようとしていますが、特定の wip_entity_id と organization_id について wip_move_transactions_v から最新の移動行のみを選択しています。私の結果は wip_entity_id ごとに 1 行のみで、wip_move_transactions_v ビューからの最新 (最新) の行のみが含まれます。

Move ビューから最新の (最新の) Move のみを取得するために、参加する方法やインライン ビューを使用する方法がわかりません。

誰かがSQLを手伝ってくれませんか。簡単に思えますが、私はメンタルブロックを抱えています。

4

2 に答える 2

0

ありがとうブルーフィート。あなたの答えは正しかったし、私が思いついた解決策よりも速かった.

--bluefeet のやり方、2 秒

select *
from
(select 
     j.wip_entity_id
    ,m.transaction_date
    ,m.to_operation_seq_num
    ,row_number() over(partition by j.wip_entity_id order by m.transaction_date desc) rn
    from wip_discrete_jobs_v j
    inner join wip_move_transactions_v m
        on j.wip_entity_id = m.wip_entity_id 
        and j.organization_id = m.organization_id
        and j.status_type in (3,6)
) d
where 1=1
  and rn = 1
  and to_operation_seq_num = 30
order by d.wip_entity_id desc;

-- ところで、53 秒

select
 j.wip_entity_id
,m.transaction_date
,m.to_operation_seq_num
from wip_discrete_jobs_v j, wip_move_transactions_v m
where 1=1
  and j.status_type in (3,6)
  and m.wip_entity_id = j.wip_entity_id
  and m.to_operation_seq_num = 30
  and m.organization_id = j.organization_id
  and m.transaction_id = (select max(transaction_id) from WIP_MOVE_TRANSACTIONS_v where wip_entity_id = j.wip_entity_id)
order by j.wip_entity_id desc;
于 2013-05-30T13:51:14.507 に答える
0

row_number()ビューに列が表示されていなくても、それぞれに対して 1 つの行を返すために使用できるはずですwip_entity_id

select *
from
(
    select * -- replace this with the columns that you want
       , row_number() over(partition by j.wip_entity_id order by m.trans_date desc) rn
    from wip_discrete_jobs_v j
    inner join wip_move_transactions_v m
        on j.wip_entity_id = m.wip_entity_id  -- add the columns you join on 
        and j.organization_id = m.organization_id
) d
where rn = 1
于 2013-05-28T19:47:14.343 に答える