2016-08-12 16 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 B 
N | A | B | cnt 
---------------- 
1 | d | e | 2 
2 | d | e | 2 

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(& Bと同じ、複数の異なるN)に基づいて、重複する値を選択します:出力は次のようになります上記のSQLコードを表Aに再度適用して表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; 
関連する問題