2011-04-11 3 views
2

나는 몇 가지 시도를 시도했지만 아직 이해할 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.T-SQL에서 쉼표로 구분 된 반복 문자열을 분할하는 방법

다음과 같은 표가 있습니다.

LocationID  Project Name 
1    A,A 
1    A 
1    A,B,C 
1    A,C 
1    B,C 
1    C 
2    A 
2    C,D,E 
2    E,F 
2    F 
3    G,H 
3    H 

내가 찾고있는 결과입니다. 모든 반복을 제거하고 연관된 ID로 고유 한 값만 보존합니다.

LocationID  Project Name 
1    A 
1    B 
1    C 
2    A 
2    C 
2    D 
2    E 
2    F 
3    G 
3    H 

나는 (.. 모든, 그러나

http://www.logiclabz.com/sql-server/split-function-in-sql-server-to-break-comma-separated-strings-into-table.aspx에서 여전히 행운을 분할 기능을 사용하지 않음)

) ','(@ProjectNames을 대체 렌 (가 쉼표의 수를 계산하려고 도움을 주시면 감사하겠습니다. 감사합니다.

답변

4
declare @T table(LocationID int, PName varchar(50)) 

insert into @T values 
(1,    'A,A'), 
(1,    'A'), 
(1,    'A,B,C'), 
(1,    'A,C'), 
(1,    'B,C'), 
(1,    'C'), 
(2,    'A'), 
(2,    'C,D,E'), 
(2,    'E,F'), 
(2,    'F'), 
(3,    'G,H'), 
(3,    'H') 

select distinct 
    T.LocationID, 
    r.value('.', 'varchar(50)') as [Project Name] 
from @T as T 
    cross apply 
    (select cast('<r>'+replace(PName, ',', '</r><r>')+'</r>' as xml)) as x(x) 
    cross apply 
    x.nodes('r') as r(r) 
+0

완벽한 솔루션 Mikael. 나는 이것에 5 시간을 보냈다 당신이 짧은 시간에 그것을 해결 믿을 수 없어. 내가 많은 것을 배울 필요가있는 것처럼 보입니다. 고마워. –

0

구별을 선택하십시오. 당신이 MySQL을 사용하는 경우

하면, 당신은 별개을 재편성하는 GROUP_CONCAT() 함수를 사용할 수 있습니다 값.

관련 문제