2013-11-15 8 views
0

У меня есть запрос, который возвращает только 1 строку, как и следовало ожидать, я хочу, чтобы дети были связаны с этим родителем, но я хочу, чтобы он был сглажен. Я хочу добавить детей в конец запроса в виде полей.Спрятать строки 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 

Я хочу, чтобы эти строки появляются в конце единственная строка, как это:

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