2016-07-19 11 views
0

私の目標は、ID列に重複を見つけることです。私は、重複しているユーザのアイデンティティとログインのみを表示したい。条件に基づいて重複レコードのみを表示

Id Login  Identity 
101 JamesT  15742 
102 SarahS  21789 
103 TonyP  15742 
104 LizB   23444 
105 EmmaT  14441 
106 ToniaL  14441 

私のようなものを示したい::これは、ユーザーが重複した値によってソートされた重複を持っているが表示されます

Login  Identity 
EmmaT  14441 
ToniaL  14441  
JamesT  15742 
TonyP  15742 

をこれは私が持っているデータの一例です。私は、a)重複した値を表示するだけでなく、b)ログインを表示するクエリを書くのが難しいです。 COUNTを実行すると、ログイン時にグループ化する必要があるようですが、この場合は動作しません。

ご協力いただきありがとうございます。

答えて

2

一つの方法は、窓関数を使用する:

select t.* 
from (select t.*, 
      min(id) over (partition by identity) as minid, 
      max(id) over (partition by identity) as maxid 
     from t 
    ) t 
where minid <> maxid; 

上記2つの異なるIDを見つけます。複数の行が必要な場合は、

select t.* 
from (select t.*, 
      count(0) over (partition by identity) as cnt 
     from t 
    ) t 
where cnt > 1; 
の代わりに count(*)を使用してください。
関連する問題