2013-04-10 2 views
0

나는이제거 값

CREATE TABLE Holder 
(
    HPKEY INT, 
    HSOMEVALUE VARCHAR(50) 
); 

INSERT INTO HOLDER (HPKEY,HSOMEVALUE) 
VALUES 
(1,'abc'), 
(2,'abc'), 
(5,'abc'), 
(7,'xyz'), 
(9,'xyz') 

처럼 보이는 그들 중에서 중복 찾을 수 있어요 지금은 결과에 설정 얻을 필요가 일부 중복 행이있는 테이블이 이 형식

Somvalue   MINKEY   OTHER_KEYS_EXCEPT_MIN 
abc    1    2,5 
xyz    7    9 

그러나 나는 세 번째 열에있는 모든 키를 얻고 있습니다.

동일한 내용으로 SQLFIDDLER을 생성했습니다.

답변

1
DECLARE @Holder TABLE 
(
    HPKEY INT, 
    HSOMEVALUE VARCHAR(50) 
); 

INSERT INTO @HOLDER (HPKEY,HSOMEVALUE) 
VALUES 
(1,'abc'), 
(2,'abc'), 
(5,'abc'), 
(7,'xyz'), 
(9,'xyz'); 

SELECT SomeValue = HSOMEVALUE, 
    MINKEY = m, 
    OTHER_KEYS_EXCEPT_MIN = STUFF((SELECT ',' + RTRIM(HPKEY) 
     FROM @Holder AS h2 WHERE HSOMEVALUE = h.HSOMEVALUE 
     AND HPKEY <> m FOR XML PATH, TYPE 
    ).value('.[1]', 'nvarchar(max)'), 1, 1, '') 
FROM (SELECT HSOMEVALUE, m = MIN(HPKEY) 
FROM @Holder GROUP BY HSOMEVALUE) AS h 
ORDER BY SomeValue;