Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Конкатенция char полей при группировние


Автор: Kolovorot 23.9.2011, 12:58
Дана таблица:
Код

 id        name
-----------------
1         'abc'
2         'def'
1         '123'
1         '789'
2         'a'


Нужный результат:

Код

id        concatname
-----------------------
1         'abc, 123, 789'
2         'def, a'

Автор: AndreyIQ 23.9.2011, 13:08
Цитата(Kolovorot @ 23.9.2011,  12:58)
Дана таблица:
Код

 id        name
-----------------
1         'abc'
2         'def'
1         '123'
1         '789'
2         'a'


Нужный результат:

Код

id        concatname
-----------------------
1         'abc, 123, 789'
2         'def, a'

Хранимые процедуры Вам в помошь.

Автор: newbee 23.9.2011, 13:16
Код

select id, group_concat(name separator ', ') as concatname from table order by id;

Автор: Zloxa 23.9.2011, 13:31
Цитата(newbee @  23.9.2011,  13:16 Найти цитируемый пост)
select id, group_concat(name separator ', ') as concatname from table order by id;

1) T-SQL  подразумевает платформу сайбез или MS SQL, а group_concat функция MySQL
2) order by и group by таки суть разные вещи


Автор: newbee 23.9.2011, 13:36
Цитата(Zloxa @  23.9.2011,  14:31 Найти цитируемый пост)
T-SQL
Ой! Не заметила (

Цитата(Zloxa @  23.9.2011,  14:31 Найти цитируемый пост)
order by и group by таки суть разные вещи
Опечаталась (

Автор: Kolovorot 23.9.2011, 14:37
Цитата(AndreyIQ @ 23.9.2011,  13:08)
Хранимые процедуры Вам в помошь.

??? А как это реализовать с помощью хранимых процедур????

Нашел решение с помощью FOR XML:
Код

SELECT t1.ID, t2.concatname
FROM
  (
    SELECT DISTINCT ID
    FROM t
   )AS t1
  OUTER APPLY
  (
    SELECT
      (
        SELECT [name] + ', '
        FROM t
        WHERE t.ID = t1.ID
        FOR XML PATH('')
       ) AS concatname
   )AS t2

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)