2014-09-02 2 views
0

이름이 매우 작고 이름과 나이만 저장하는 이름의 테이블이 있습니다.테이블의 행을 연결하는 저장 프로 시저

Name Age 
------------- 
Alex  3 
Laura 2 
Kate  2 
Max  3 

이 테이블의 행을 하나의 문자열로 연결할 수있는 저장 프로 시저를 작성해야합니다. 나는 주위에 예제를 보았지만 아무도 나를 정말로 돕지 않았다.

"Alex, 3, Laura, 2, Kate, 2, Max, 3;"으로 문자열을 반환해야합니다.

select Name + ',' + cast(Age as varchar(3)) as both 
into #temptable 
from NameAge 

그럼 내가 합류했다 :

는 나중에 사용하기 위해 임시 테이블에 결과를 쉼표를 추가 한 다음 저장하기 위해, 하나의 열을 가입하는 것이 작업을 수행 할 수있는 쉬운 방법을 생각 세미콜론으로 분리 각 행과는 : 임시 테이블이 이미 작성되어 있기 때문에 나는 변경하는 경우

올바른 결과를 반환
DECLARE @Names VARCHAR(8000) 
SELECT @Names = COALESCE(@Names + ';', '') + both FROM #temptable 
SELECT @Names 

그러나 나는 분명히 그것을 하나씩 실행할 수 없습니다.

기본적으로 저장 프로 시저 내에서 이러한 문을 사용해야하지만 약간의 문제가 있습니다.

도움이 될만한 자료가 있거나 내 검색에서 찾은 내용이 모두 내가 찾는 정보가 아닙니다.

답변

2
select 
    stuff((select ';' + Name + ',' + convert(varchar(255), Age) 
       from [name] 
       for xml path(N''), type).value(N'.[1]', N'nvarchar(max)') 
      ,1, 1, '') 

또는 원래의 솔루션을 사용하여 :

DECLARE @Names VARCHAR(8000) 
SELECT @Names = COALESCE(@Names + ';', '') + Name + ',' + cast(Age as varchar(3)) FROM [name] 
SELECT @Names