2017-06-02 199 views

回答

0

您可以使用QUALIFY語句來識別和輸出重複:

既然你不同意你的表......然後考慮以下ABC表:

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

如果使用字段f1f2確定了唯一記錄。在此示例中,f1=2 and f2='a'f3zn重複的記錄。輸出這些我們使用qualify

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

QUALIFY使用窗口函數來確定哪些記錄在輸出記錄集中包含。這裏我們使用窗口函數COUNT(*)通過我們獨特的組合鍵f1, f2進行分區。我們只保留那些分區上的Count(*)大於1的記錄。

這將輸出:

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

您可以在CREATE TABLE語句中使用此類似:

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