2011-04-19 3 views
0

가능한 중복 :
SQL Server: Can I Comma Delimit Multiple Rows Into One Column?얻기 연결된 행

스크립트 : -

CREATE TABLE Category (
    ID int, 
    ErrorMessage nvarchar(200) 
) 


INSERT INTO Category 
    (ID, ErrorMessage) 
VALUES 
    (1, 'efgh') 

INSERT INTO Category 
    (ID, ErrorMessage) 
VALUES 
    (1, 'abcd') 

INSERT INTO Category 
    (ID, ErrorMessage) 
VALUES 
    (1, 'ijkl') 

INSERT INTO Category 
    (ID, ErrorMessage) 
VALUES 
    (2, 'efgh') 

INSERT INTO Category 
    (ID, ErrorMessage) 
VALUES 
    (2, 'abcd') 

INSERT INTO Category 
    (ID, ErrorMessage) 
VALUES 
    (2, 'ijkl') 

예상 출력

Id     ErrorMessage 
---------------------------------- 
1     abcd,efgh,ijkl 
2     abcd,efgh,ijkl 

범주 ID는 그룹화되고 쉼표로 구분 된 메시지는 오름차순입니다.

+0

SQL 서버의 버전은 무엇? –

+0

Sql server 2005 –

답변

2
Select C.Id 
    , Stuff(
     (
     Select ', ' + C1.ErrorMessage 
     From Category As C1 
     Where C1.Id = C.Id 
     Order By C1.ErrorMessage 
     For Xml Path('') 
     ), 1, 2, '') As Categories 
From Category As C 
Group By C.Id 
+0

XML 형식 및 값 추출을 사용하지 않고 XML 자격 부여 가능 – RichardTheKiwi

2
select A.ID, STUFF((
    select ','+B.ErrorMessage 
    from Category B 
    where B.ID = A.ID 
    order by B.ErrorMessage 
    for xml path ('a'), type).value('.','nvarchar(max)'),1,1,'') 
from Category A 
group by A.ID 
order by A.ID