2016-08-28 7 views
1

私は3つのフィールドRecordID、PhoneNumber、Dispositionを含むテーブルを持っています。私はSQLサーバーを使用しています。重複する値のテーブルのレコードを表示するSQLクエリ

ケース1: -

RecordID  PhoneNumber Disposition 

2345   9212345667 PNP 
2345   9212345667 PNP 
2345   9212345667 PNP 
4563   8234589012 PNP 
ここ

私は2行から単一レコードを表示する必要があります。

Result : 2345  9212345667 PNP 
     4563  8234589012 PNP 

RecordID、PhoneNumberおよびDispositionの重複に基づいて1つのレコードのみを表示する必要があります。

ケース2: - ここに

RecordID  PhoneNumber Disposition 

2345   9212345667 PNP 
2345   9212345667 CBK 
4563   8234589012 PNP 

Result : 4563  8234589012 PNP 

レコードIDとPhoneNumberのは同じですが、処分は最初の2つのレコードに異なっています。したがって、レコードは表示されません.3番目のレコードは、RecordIDとPhoneNumberの値が重複している場所ではありません。だからそれは表示する必要があります。

ありがとうございました。一度だけ、各行を取得し、重複を省略する

+1

これはどのRDBMSですか? 'mysql'、' postgresql'、 'sql-server'、' oracle'、 'db2'のどれかを指定するタグを追加してください。 –

+1

おそらくSELECT DISTINCTがそのトリックですか? –

+0

重複が最初に保存されないようにデザインを標準化する – Strawberry

答えて

2

は重複がgroup by/having count(*) = 1

select RecordID, PhoneNumber, Disposition from mytable 
group by RecordID, PhoneNumber, Disposition 
having count(*) = 1 
1

SQL ServerがTop(1) with ties ... order byプラスrow_number()

Select Top(1) with ties RecordID, PhoneNumber, Disposition 
from table 
-- case 1 
order by row_number() over (partition by RecordID, PhoneNumber, Disposition order by recordID) 
-- case 2 
--order by row_number() over (partition by RecordID, PhoneNumber order by recordID) 
; 
を持って使用することを存在しない行を取得するには distinct

select distinct RecordID, PhoneNumber, Disposition from mytable 

を使用します

関連する問題