powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как склеить столбцы в строку у GROUP BY?
5 сообщений из 5, страница 1 из 1
Как склеить столбцы в строку у GROUP BY?
    #34610035
GolemXIV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
задача: есть объекты со свойствами, необходимо получить список сочетаний свойств и количество таких объектов (в принципе количество свойств ограничено, но переборный вариант очень не хочется реализовывать).

Например:
таблица: 1 '10', 1 '20', 3 '10', 3 '20', 4 '11', 7 '10', 7 '20', 7 '11'
результат
'10 20' 2шт
'10 20 11' 1шт
'11' 1шт

есть ли какой-то разумный способ сгруппировав таблицу по первому полю получить промежуточный результат вида
1 '10 20'
2 '10 20'
3 '11'
7 '10 20 11'
?
...
Рейтинг: 0 / 0
Как склеить столбцы в строку у GROUP BY?
    #34610041
GolemXIV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
извините, конечно

1 '10 20'
3 '10 20'
4 '11'
7 '10 20 11'
...
Рейтинг: 0 / 0
Как склеить столбцы в строку у GROUP BY?
    #34610123
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может поможет рекурсивный SQL
...
Рейтинг: 0 / 0
Как склеить столбцы в строку у GROUP BY?
    #34610290
Фотография Alexey Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приверно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
WITH Q1(ID, NAME)
AS (
VALUES( 1 , '10'), ( 1 , '20'), ( 1 , '30'), ( 3 , '10'), ( 3 , '20'), ( 4 , '11')),

Q2(NUM, ID, NAME)
AS (
SELECT ROW_NUMBER() OVER(PARTITION BY Q1.ID), Q1.ID, Q1.NAME
FROM Q1),

Q3(NUM, ID, NAME)
AS (
SELECT Q2.NUM, Q2.ID, CAST(Q2.NAME AS VARCHAR( 128 ))
FROM Q2
WHERE Q2.NUM =  1 
UNION ALL
SELECT Q2.NUM, Q2.ID, CAST(Q3.NAME || ' ' || Q2.NAME AS VARCHAR( 128 ))
FROM Q2, Q3
WHERE Q2.ID = Q3.ID AND Q2.NUM - Q3.NUM =  1 ),

Q4(ID, NUM)
AS (
SELECT Q3.ID, MAX(Q3.NUM)
FROM Q3
GROUP BY Q3.ID)

SELECT Q3.ID, Q3.NAME
FROM Q3
WHERE EXISTS(SELECT Q4.ID
        FROM Q4
        WHERE Q4.ID = Q3.ID AND Q4.NUM = Q3.NUM)
ORDER BY ID
...
Рейтинг: 0 / 0
Как склеить столбцы в строку у GROUP BY?
    #34612614
GolemXIV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Будем учиться строить рекурсивные SQL.
Можно обойтись без Q4, SELECT ID, MAX(NAME) FROM Q3 GROUP BY ID вроде достаточно.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как склеить столбцы в строку у GROUP BY?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]