2017-01-05 2 views
3

Ich habe Tabelle wie Unten in Spalte b Duplizieren:Suche für jeden Wert in Spalte A Oracle

Sr_No C_A C_B 
------------------- 
1  100 A 
2  100 A 
3  100 B 
4  101 A 
5  102 A 
6  102 B 
7  103 A 
8  103 A 
9  103 B 

Und ich möchte Auswahlabfrage unten bekommen

C_A 
---- 
100 
103 

ich, wie viele Datensätze wissen wollen sind in der C_A-Spalte mit doppelten Werten in der C_B-Spalte.

Antwort

5

Die folgende Abfrage überprüft für jede Gruppe C_A, dass die Anzahl der eindeutigen Werte C_B kleiner als die Gesamtzahl der Werte ist. Diese Bedingung bedeutet, dass alle C_B Werte für eine gegebene C_A Gruppe nicht eindeutig sind und dass es Duplikate gibt.

SELECT C_A 
FROM yourTable 
GROUP BY C_A 
HAVING COUNT(DISTINCT C_B) < COUNT(*) 
1

Wenn ich gut verstehen, müssen Sie:

select distinct C_A 
from 
    (select C_A, C_B, count(1) over (partition by C_A, C_B) as cnt 
    from test 
    ) 
where cnt > 1 

Die verschachtelte Abfrage zählt die Anzahl der Duplikate für jedes Paar von Werten in C_A, C_B, während der extern man einfach dieses Ergebnis Filter auf Erhalten Sie nur Paare mit Duplikaten

Verwandte Themen