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; 
Смежные вопросы