2016-08-04 5 views
-1

У меня есть таблица location, которая содержит значения A1, A2, A3... и т. Д. В столбце id. У меня есть еще один стол location_color как это:Результаты для запятой по запросу SQL

A1 blue 
A1 red 
A1 green 
A2 yellow 
A2 red 
A3 blue 
A3 red 
. 
. 

Теперь я хочу, чтобы запросить, так что результат будет, как этот

blue,red,green 
yellow,red 
Blue, red 

Мой запрос является

select location_color.color 
from location_color 
where location.id = location_color.location_id 

, но это не работает.

+1

В MySQL вы можете использовать 'GROUP BY' и' GROUP_CONCAT() ' –

+3

Какой RDBMS (поставщик и версия)? Тег * sql * недостаточно ... – Shnugo

+0

Вы не указали таблицу 'location'. Но почему вы хотите иметь это предложение 'where', когда вы ничего не используете из таблицы' location'? Просто оставьте это «где». – trincot

ответ

1

Предполагая, что вы используете SQL Server, вот что вы можете использовать:

SELECT location_id, stuff((
     select DISTINCT ',' + u.location_color 
     from #temp u 
     where u.location_id = t.location_id 
     for xml path('') 
    ),1,1,'') as location_color_csv 
FROM #temp t 
GROUP BY t.location_id 
Смежные вопросы