динамический пивот в db2 - PullRequest
0 голосов
/ 29 ноября 2018

Итак, у нас есть ключевое слово PIVOT в Oracle / SQL Server, когда вы конвертируете строки в столбцы.Не в DB2, я хочу преобразовать результаты строк и объединить их в столбец, динамически, поскольку я не знаю, сколько строк я могу получить, они могут отличаться.Например, таблица x

COL1  COL2
ABC  10
ABC  20
ABC  30

Я хочу отобразить это как

COL1  COL2
ABC   10,20,30

Но количество записей может отличаться, поэтому я не могу использовать регистр.

Хочу сделать этодля запросов многих таблиц не конкретный запрос;функция или наиболее предпочтительно в самом запросе выбора.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Для более длинных строк.

select substr(xmlserialize(
xmlquery('$L/text()' passing XMLAGG(xmlelement(name "a", ','||colname)) as "L")
as clob(1m)
), 2)
from syscat.columns;
0 голосов
/ 29 ноября 2018

Если вы используете версию Db2 LUW 11.1.4.4, вы можете обойти ее, используя sysibm.json_array function :

VALUES JSON_ARRAY(SELECT DEPTNO FROM DEPT);

1
-------------------------------
["F22","G22","H22","I22","J22"]

, затем вы можете сохранить json_array в символеоснованный столбец, varchar, clob.

...