@DD-var

Как объединить строки в SQL?

Имеется такая таблица:
ID   |    detal       |           Name               |       mono                 |   
1        25                    Подшипник                 Ступицы             
2        25                    Подшипник                 Скольжения       
3        25                    Подшипник                 Внутренний       
4        25                    Подшипник                 Ступицы            

как ее превратить в такую:
ID   |    detal       |           Name               |       mono                 |      mono2         |        mono 3          |          
1          25                    Подшипник                 Ступицы                  Скольжения                     Внутренний
  • Вопрос задан
  • 261 просмотр
Решения вопроса 1
@alexalexes
Лучше, конечно, вертикальную выборку перерабатывать в горизонтальную не в SQL, а в той процедурной прослойке, которая вызывает запрос.
На SQL можно такое провернуть, но будет не универсально (фиксированное число столбцов в итоговой выборке).
with main_tb (id, detal, mono, row_num) as (select id,
          detal,
          mono
         row_number() over (partition by detal order by id) as row_num
from tb) 

select t.id,
          t.detal, 
          t.name,
          (select t1.mono from main_tb as t1 where t1.detal = t.detal and t1.row_num = 1) mono,
          (select t1.mono from main_tb as t1 where t1.detal = t.detal and t1.row_num = 2) mono2,
          (select t1.mono from main_tb as t1 where t1.detal = t.detal and t1.row_num = 3) mono3
from tb as t
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы