2016-08-12 58 views
1

我有以下查詢:計數不同重複

WITH CTE AS(
    SELECT N, A, B, 
    COUNT(*) OVER(PARTITION BY A, B) as cnt 
    FROM Table 
) 
SELECT * FROM CTE WHERE cnt > 1 

其返回所有重複從表計數。輸出看起來是這樣的:

Table A (result of SQL) 
N | A | B | cnt 
---------------- 
1 | a | b | 2 
1 | a | b | 2 
1 | a | c | 1 
1 | d | e | 2 
2 | d | e | 2 

,我現在想選擇基於N(A & B中的相同,多個不同的N)重複的值,所以:

Table B 
N | A | B | cnt 
---------------- 
1 | d | e | 2 
2 | d | e | 2 

我應該只是再次在表A上應用上面的SQL代碼以獲得表B?還是有更簡單的解決方案?

回答

1

我建議:

WITH CTE AS (
     SELECT N, A, B, 
      MIN(n) OVER (PARTITION BY A, B) as min_n, 
      MAX(n) OVER (PARTITION BY A, B) as max_n 
     FROM Table 
    ) 
SELECT * 
FROM CTE 
WHERE min_n <> max_n;