2012-04-03 13 views
1

私はチーズIDテーブルの最大値(seq_no)がMOLDである チーズのCHEESEとFRESHNESSコードを取得するために、フレッシュネスと私のチーズテーブルに加わりたいと思います。内部結合でrank()を使用するにはどうすればよいですか?

ランク()を使用している場合、どこにフレッシュネスに参加しますか?

CHEESE         FRESHNESS 
CHEESE_ID SEQ_NO FRESH_CODE    FRESH_CODE FRESH_DESC  
=================================   ======================== 
    1   1  MOLD     MOLD   MOLDY CHEESE  
    1  23  FRSH     FRSH   EDIBLE 
    1  34  FRSH 
    2   2  FRSH 
    2  18  MOLD 
    3   3  MOLD 
    3   5  MOLD 
    3   7  MOLD 


DESIRED RESULT 
========================== 
CHEESE_ID SEQ_NO FRESH_CODE FRESH_DESC  SEQ_RANK 
2   18  MOLD  MOLDY CHEESE 1 
3   7  MOLD  MOLDY CHEESE 1 

ここに私の希望するシーケンス番号を得るために使用しているコードがあります。

select 
     cheese_id,seq_no,fresh_code,seq_rank 
    from (select 
     cheese_id,seq_no, fresh_code, 
     rank() over (partition by cheese_id 
          order by seq_no desc) seq_rank 
from cheese 
where seq_rank = 1 
and fresh_code = 'MOLD' 

答えて

2

あなたが行うことができますいずれかのサブクエリに参加

select cheese_id,seq_no,fresh_code,fresh_desc,seq_rank 
    from (select cheese_id, 
       seq_no, 
       fresh_code, 
       fresh_desc, 
       rank() over (partition by cheese_id 
           order by seq_no desc) seq_rank 
      from cheese 
       join freshness using (fresh_code)) 
where seq_rank = 1 
    and fresh_code = 'MOLD' 

か、あなたのサブクエリに参加することができます

select cheese_id,seq_no,fresh_code,fresh_desc,seq_rank 
    from (select cheese_id, 
       seq_no, 
       fresh_code, 
       fresh_desc, 
       rank() over (partition by cheese_id 
           order by seq_no desc) seq_rank 
      from cheese) cheese_outer 
     join freshness using (fresh_code) 
where seq_rank = 1 
    and fresh_code = 'MOLD' 
関連する問題