2014-11-19 3 views
0

이 질문에 대해 지난 두 시간 동안의 답변 (하위 쿼리, CTE, 파생 테이블이있는 왼쪽 조인)에 대해 너무 높게 평가되었지만 해결 방법이 없습니다 정말 내 기준을 충족 ..중복 된 열 값이있는 SQL의 행 제거

나는 한 테이블 데이터를 다음과 같이 :

COL1 COL2 COL3 
    1  A 0 
    2  A 1 
    3  A 1 
    4  B 0 
    5  B 0 
    6  B 0 
    7  B 0 
    8  B 1 

, 컬럼 1은 primary key이며 int입니다. 열 2는 nvarchar(max)이고 열 3은 int입니다. 나는이 쿼리를 사용하여 결정했다 :

select name, COUNT(name) as 'count' 
FROM [dbo].[AppConfig] 
group by Name 
having COUNT(name) > 3 

나는 그들이 3 배 이상의 열 C의 발생이있는 경우에만 "A, B 및 C"의 총 수를 반환 할 수 있습니다.

COL1 COL2 COL3 
    1  A 0 
    2  A 1 
    4  B 0 
    8  B 1     

이 사람이 나를 도와 수 : 지금 내가 제공하는 샘플 테이블이 지금과 같을 것이다 열 (3)의 초기 값 이후에 발생하는 모든 행을 제거하려고?

답변

0

을 당신이 원하는 모든이 COLB - COLC 조합으로 첫 번째 행의 경우, 다음을 수행합니다

select min(id) as id, colB, colC 
from tbl 
group by colB, colC 
order by id 

SQL Fiddle

0

이 작동합니다 :

;WITH numbered_rows as (
SELECT 
    Col1, 
    Col2, 
    Col3, 
    ROW_NUMBER() OVER(PARTITION BY Col2, Col3 ORDER BY Col3) as row 
FROM AppConfig) 
SELECT 
    Col1, 
    Col2, 
    Col3 
FROM numbered_rows 
WHERE row = 1 
0
SELECT DISTINCT MIN(COL1) AS COL1,COL2,COL3 
FROM TABLE 
GROUP BY COL2,COL3 
ORDER BY COL1