2013-11-15 4 views
0

필자는 필연적으로 1 행만 반환하는 쿼리를 사용합니다.이 하나의 부모 ow와 관련된 자식을 가져오고 싶지만이 개체를 병합해야합니다. 쿼리의 끝에 자식을 필드로 추가하려고합니다.SQL 행을 열로 변환

그래서 지금 임시 테이블에 내 결과를 가지고 있고, 나는이 테이블을 선택할 수 있으며, 이러한 결과입니다 #Children

Row LastName FirstName MiddleName A-Number StatusID DateOfBirth 
1 Chu  Da Chi  NULL NULL 26616 00:00.0 
2 Chu  Herbert  NULL NULL 26958 00:00.0 
3 Chu  Herberta NULL NULL 26959 00:00.0 
4 Chu  Mini  NULL NULL 166325 59:30.0 
5 Chu  Qwerty  NULL NULL 212792 00:00.0 
6 Chu  Xiao Chi NULL NULL 26615 00:00.0 

SELECT * FROM 나는이 행의 끝 부분에 표시 할 이 같은 단일 행 :

ParentID Child1FirstName Child2Firstname Child3Firstname, etc... 
+1

지금까지 무엇을 생각해 냈습니까? – dav1dsm1th

+2

어떤 데이터베이스를 사용하고 있습니까? –

+1

'ParentId'란 무엇입니까? – Taryn

답변

0

SET NOCOUNT ON; 

DECLARE @#TempTable TABLE (FirstName VARCHAR(50)); 

INSERT INTO @#TempTable 
SELECT FirstName from #Children 

DECLARE @result varchar(8000) = 'ParentID', 
     @FirstName varchar(50); 

WHILE EXISTS (SELECT * FROM @#TempTable) 
BEGIN 
    SELECT TOP 1 @FirstName = FirstName FROM @#TempTable; 

    SET @result += ' ' + @FirstName; 

    DELETE @#TempTable Where FirstName = @FirstName; 
END 

PRINT @result; 
-1
SELECT ParentID 
     ,MAX(CASE WHEN Row = 1 THEN FirstName ELSE NULL END) AS Child1FirstName 
     ,MAX(CASE WHEN Row = 2 THEN FirstName ELSE NULL END) AS Child2FirstName 
     ,MAX(CASE WHEN Row = 3 THEN FirstName ELSE NULL END) AS Child3FirstName 
     ... 
FROM #Children 
GROUP BY ParentID 
시도