0

テーブル「members」(以下に表示)がある場合、membership_id(Oracle)の最初の出現のレコードを取得するにはどうすればよいですか。

推測される結果

123                 John                      Doe                      A       P
313                 Michael                   Casey                    A       A
113                 Luke                      Skywalker                A       P

テーブル-メンバー

membership_id       first_name                last_name                status  type
123                 John                      Doe                      A       P
313                 Michael                   Casey                    A       A
113                 Luke                      Skywalker                A       P
123                 Bob                       Dole                     A       A
313                 Lucas                     Smith                    A       A
4

3 に答える 3

3
SELECT membership_id,
       first_name,
       last_name,
       status,
       type
  FROM( SELECT membership_id,
               first_name,
               last_name,
               status,
               type,
               rank() over (partition by membership_id
                                order by type desc) rnk
          FROM members )
 WHERE rnk = 1

サンプルデータセットで機能します。membership_id同点(つまり、最大値が同じで複数の行)を持つことができる場合、typeこのクエリはそれらすべての行を返します。同点の行の1つだけを返したい場合は、order byすべての同点が解除されるようにに条件を追加するか、任意に同点を解除するのrow_numberではなく、関数を使用する必要があります。rank

于 2012-09-18T15:15:18.510 に答える
0
select *
from members 
where rowid in (
    select min(rowid)
    from members
    group by membership_id
)
于 2012-09-19T05:31:24.367 に答える
0
Select A.*
FROM Members AS A inner join
     (Select membership_id, first(first_name) AS FN, first(last_name) AS LN 
      From Members
      Group by membership_id) AS B
     ON A.membership_id=B.membership_id and A.first_name=B.FN and A.last_name=B.LN

お役に立てば幸いです。

于 2012-09-18T15:06:11.550 に答える