Транспонировать результат столбца в наборе результатов в строки - PullRequest
0 голосов
/ 11 августа 2011

У меня есть такой набор результатов

Continent   Country
------- -------
Asia    Japan
Asia    Russia
Asia    India
Europe  Britain
Europe  France

из запроса

select continent,country from tablexxx

Я хочу получить результат в формате

Continent   Country
------- -------
Asia    Japan,Russia,India
Europe  Britain,France

Я слышал о сводных таблицах,но мне кажется трудным ... любую помощь с запросом, пожалуйста:)

Вот мое окончательное решение в SQL Server, оно работает ... :)

SELECT     continents, Countries = replace
                          ((SELECT Countries AS [data()]
                              FROM tblXXX
                              WHERE  continents = a.continents
                              ORDER BY continents FOR xml path('')), ' ',  ',' )
FROM       tblXXXa
WHERE     continents IS NOT NULL
GROUP BY continents

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Если вы используете MySQL, вам нужно использовать GROUP_CONCAT

Пример:

SELECT continent, GROUP_CONCAT(county ORDER BY country) as Countries 
FROM tablexxx
GROUP BY continent
ORDER BY continent

Ссылка
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

0 голосов
/ 11 августа 2011

Вы можете использовать функцию COALESCE для построения списка с разделителями-запятыми из строк, как в этом примере:

DECLARE @EmployeeList varchar(100)

SELECT @EmployeeList = COALESCE(@EmployeeList + ', ', '') + 
   CAST(Emp_UniqueID AS varchar(5))
FROM SalesCallsEmployees
WHERE SalCal_UniqueID = 1

SELECT @EmployeeList
...