上記の2つのクエリを単純に組み合わせたクエリを次に示します。必ず、2つのメソッドからの出力を確認して比較してください。
select
r.user_id, r.role_id, r.participant_code, max(status_id)
from
user_role r,
cmp_role c
where
r.role_id = c.role_id
and r.active in (0,1,3)
and r.participant_code is not null
and sysdate between r.effective_from_date and r.effective_to_date
and c.group_id = 3
group by
r.user_id, r.role_id, r.participant_code;
必要な結果を得るために、一時テーブルを使用して後でレコードを削除する必要はありません。それを使用する理由があったかもしれませんが、おそらくパフォーマンスですか?
また、クエリのように見え、USER
に参加します USER_ID
として、テーブルは不要です USER_ROLES
から入手できます 。上記のクエリから省略しました。うまくいけば、それはあなたにそれを改善するための良いスタートを与えるでしょう。