2015-04-05 2 views
0

Предположим, что есть таблица с именем «а» с следующими данными:как достичь конкатенации с помощью группы по

col1, col2 
----------- 
1  1 
1  2 
1  3 
2  2 
2  3 
3  4 

затем достичь следующих результатов:

col1, col2 
-------------- 
1  6 
2  5 
3  4 

я могу запустить запрос типа:

выберите col1, sum (col2) из ​​группы по col1.

Но предположим, что мой стол:

col1, col2 
--------- 
1  a 
1  b 
1  c 
2  d 
2  e 
3  f 

здесь col2 имеет VarChar типа не числового типа.

Каким будет запрос sql, чтобы дать следующие результаты ???

col1, col2 
------------ 
1  a,b,c 
2  d,e 
3  f 

Я попробовал группу по col1, но как объединить значения в col2 ???

проблема в том, что col2 имеет тип varchar.

+1

Пожалуйста, отметьте свой вопрос в базе данных, которую вы фактически используете. , , MySQL или SQL Server. –

+0

Мне нужен sql-запрос для mysql и sql-сервера. –

ответ

1

в случае MySQL вы можете использовать GROUP_CONCAT как это:

SELECT 
    col1, 
    GROUP_CONCAT(col2) as col2 
FROM demo 
GROUP BY col1; 

Адрес sqlfiddle.

В случае SQL Server вы можете использовать STUFF так:

SELECT t1.col1, 
    stuff((SELECT ',' + CAST(t2.col2 as VARCHAR(10)) 
    FROM demo t2 WHERE t1.col1 = t2.col1 
    FOR xml path('')),1,1,'') col2 
FROM demo t1 
GROUP BY t1.col1; 

Вот sqlfiddle.

+0

Он отлично работает, не могли бы вы рассказать о запросе бит больше, потому что тогда было бы легко понять. –

0

Вы можете использовать функцию group_concat в MySQL

select 
col1, 
group_concat(col2) as col2 
from table_name 
group by col1 
0

Вот хороший пример, я столкнулся с подобным вопросом в то время как кодирование расписание (рабочий пример: www.oldiesplus.com/schedule/)

Вот ссылка на мой вопрос с ответом: https://stackoverflow.com/a/27047139

Смежные вопросы