2016-08-12 3 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 (A & B 같은 하나 이상의 서로 다른 N)을 기준으로 중복 값을 선택합니다 : 출력은 다음과 같습니다 위의 SQL 코드를 Table A에 다시 적용하여 Table 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;