2017-06-02 3 views

Antwort

0

Sie QUALIFY Anweisung verwenden können, um Duplikate zu identifizieren und Ausgang:

Da Sie Ihren Tisch nicht teilen ... Sehen Sie dann die folgende Tabelle ABC:

+----+----+----+ 
| f1 | f2 | f3 | 
+----+----+----+ 
| 1 | a | x | 
| 1 | b | y | 
| 2 | a | z | 
| 2 | b | w | 
| 2 | a | n | 
+----+----+----+ 

Wenn ein eindeutiger Datensatz mithilfe der Felder f1 und f2 ermittelt wird. In diesem Beispiel ist der Datensatz f1=2 and f2='a' ein Duplikat mit f3 Werten z und n. Zur Ausgabe diese verwenden wir qualify:

SELECT * 
FROM ABC 
QUALIFY COUNT(*) OVER (PARTITION BY f1, f2) > 1; 

QUALIFY Fensterfunktionen verwendet, um zu bestimmen, welche in dem ausgegebenen Datensatz enthalten aufzeichnet. Hier verwenden wir die Fensterfunktion COUNT(*) Partitionierung durch unseren einzigartigen zusammengesetzten Schlüssel f1, f2. Wir behalten nur Datensätze, bei denen die Count(*) über dieser Partition größer als 1 ist.

erhalten Sie folgende Ausgabe:

+----+----+----+ 
| f1 | f2 | f3 | 
+----+----+----+ 
| 2 | a | z | 
| 2 | a | n | 
+----+----+----+ 

Sie können dies in einer wie CREATE TABLE Anweisung:

CREATE TABLE ABC_DUPE AS 
(
    SELECT * 
    FROM ABC 
    QUALIFY COUNT(*) OVER (PARTITION BY f1, f2) > 1 
) PRIMARY INDEX (f1, f2); 
Verwandte Themen