DB2 - объединить данные строки в список запятых - PullRequest
0 голосов
/ 11 мая 2018

Я читаю таблицу DB2, где данные хранятся как

user    group  
-----   ------
user1   groupa  
user1   groupb  
user1   groupc  
user2   groupc  
user3   groupc  

Я хочу, чтобы для каждого пользователя возвращалась одна строка.

user1 groupa, groupb, groupc

мне сказали другие формы, правильный способ сделать это ниже

SELECT VRAVW900_USER, SUBSTR(xmlserialize(xmlagg(xmltext(CONCAT( ', ',VRAVW900_Group))) as VARCHAR(1024)), 3) AS Groups
FROM VRADB2.VRAVW900 
GROUP BY VRAVW900_USER

Это не работает для меня, и я получаю ошибку:

DB2 SQL Error: SQLCODE=-199, SQLSTATE=42601, SQLERRMC=VARCHAR;CLOB CHAR CHARACTER BLOB BINARY DBCLOB, DRIVER=3.64.133
    at com.ibm.db2.jcc.am.bd.a(bd.java:679)
    at com.ibm.db2.jcc.am.bd.a(bd.java:60)
    at com.ibm.db2.jcc.am.bd.a(bd.java:127)
    at com.ibm.db2.jcc.am.io.c(io.java:2706)
    at com.ibm.db2.jcc.am.io.d(io.java:2694)
    at com.ibm.db2.jcc.am.io.a(io.java:2143)
    at com.ibm.db2.jcc.am.io.a(io.java:2119)
    at com.ibm.db2.jcc.t4.ab.h(ab.java:136)
    at com.ibm.db2.jcc.t4.ab.b(ab.java:41)
    at com.ibm.db2.jcc.t4.p.a(p.java:32)
    at com.ibm.db2.jcc.t4.qb.i(qb.java:135)
    at com.ibm.db2.jcc.am.io.gb(io.java:2112)
    at com.ibm.db2.jcc.am.io.a(io.java:3191)
    at com.ibm.db2.jcc.am.io.a(io.java:686)
    at com.ibm.db2.jcc.am.io.executeQuery(io.java:669)
    at com.service_now.monitor.jdbc.JDBCRowSet.query(JDBCRowSet.java:64)
    at com.service_now.mid.probe.JDBCProbe.doSelect(JDBCProbe.java:312)
    at com.service_now.mid.probe.JDBCProbe.doQuery(JDBCProbe.java:198)
    at com.service_now.mid.probe.JDBCProbe.probe(JDBCProbe.java:123)
    at com.service_now.mid.probe.AProbe.process(AProbe.java:84)
    at com.service_now.mid.queue_worker.AWorker.runWorker(AWorker.java:125)
    at com.service_now.mid.queue_worker.AWorkerThread.run(AWorkerThread.java:20)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

я бегуэто из ServiceNow, DB2 Версия 11

1 Ответ

0 голосов
/ 11 мая 2018

Тип данных VRAVW900_Group недопустим, поэтому ошибка -199.

Однако приведите VRAVW900_Group к VARCHAR и используйте функцию LISTAGG для агрегирования данных строки.

SELECT VRAVW900_USER,
LISTAGG(Cast(VRAVW900_Group as VARCHAR), ', ') AS Groups
FROM VRADB2.VRAVW900 
GROUP BY VRAVW900_USER

Проверьте эту ссылку для использования функции LISTAGG .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...