SQL 将行连接成一个字段 (DB2)
SQL concatenate rows into one field (DB2)
我需要从我的 DB2 数据库中提取一些数据。我在一个 table 中有关键字,每个关键字都是单独的一行。在提取物中,我希望将所有 ID 的所有关键字都放在一个字符串中,用逗号分隔。
所以,解释一下:
我有这样的数据
ID | keyword
===========================
prd1 | test
---------------------------
prd2 | keywords
---------------------------
prd1 | flower
---------------------------
prd4 | picture
---------------------------
prd7 | 234567
---------------------------
prd9 | reored
---------------------------
prd4 | finland
---------------------------
prd0 | 983y23
---------------------------
prd4 | code
---------------------------
prd9 | tratata
这是我想要实现的示例:
ID | keyword concatenated
===========================
prd1 | test, flower
---------------------------
prd2 | keywords
---------------------------
prd4 | picture, finland, code
---------------------------
prd7 | 234567
---------------------------
prd9 | reored, tratata
---------------------------
prd0 | 983y23
---------------------------
我试过 concat
:
SELECT concat(keyword) FROM table.keywordTbl
我尝试了一些 DB2 特定命令:
SELECT IDs, Sys_Connect_By_Path(varchar(keyword), ', ') AS "keyword concatenated" FROM table.keywordTbl START WITH ID='prd1' CONNECT BY ID=keyword
PIVOT
不适合这个,但我也检查过了。
GROUP_CONCAT
也不行。
当然,none 这些作品...
你有什么提示给我吗?
尝试根据以下脚本修改查询
SELECT
ID,
SUBSTR(xmlserialize(xmlagg(xmltext(CONCAT( ', ',keyword))) as VARCHAR(1024)), 3) AS "keyword concatenated"
FROM table.keywordTbl
GROUP BY ID
如果你有DB2 v9.7+
,你也可以使用LISTAGG()
函数。第一个参数是列,第二个参数是分隔符。
SELECT
ID
, LISTAGG(keyword, ',') AS "keyword concatenated"
FROM table.keywordTbl
GROUP BY ID
我需要从我的 DB2 数据库中提取一些数据。我在一个 table 中有关键字,每个关键字都是单独的一行。在提取物中,我希望将所有 ID 的所有关键字都放在一个字符串中,用逗号分隔。
所以,解释一下: 我有这样的数据
ID | keyword
===========================
prd1 | test
---------------------------
prd2 | keywords
---------------------------
prd1 | flower
---------------------------
prd4 | picture
---------------------------
prd7 | 234567
---------------------------
prd9 | reored
---------------------------
prd4 | finland
---------------------------
prd0 | 983y23
---------------------------
prd4 | code
---------------------------
prd9 | tratata
这是我想要实现的示例:
ID | keyword concatenated
===========================
prd1 | test, flower
---------------------------
prd2 | keywords
---------------------------
prd4 | picture, finland, code
---------------------------
prd7 | 234567
---------------------------
prd9 | reored, tratata
---------------------------
prd0 | 983y23
---------------------------
我试过 concat
:
SELECT concat(keyword) FROM table.keywordTbl
我尝试了一些 DB2 特定命令:
SELECT IDs, Sys_Connect_By_Path(varchar(keyword), ', ') AS "keyword concatenated" FROM table.keywordTbl START WITH ID='prd1' CONNECT BY ID=keyword
PIVOT
不适合这个,但我也检查过了。
GROUP_CONCAT
也不行。
当然,none 这些作品...
你有什么提示给我吗?
尝试根据以下脚本修改查询
SELECT
ID,
SUBSTR(xmlserialize(xmlagg(xmltext(CONCAT( ', ',keyword))) as VARCHAR(1024)), 3) AS "keyword concatenated"
FROM table.keywordTbl
GROUP BY ID
如果你有DB2 v9.7+
,你也可以使用LISTAGG()
函数。第一个参数是列,第二个参数是分隔符。
SELECT
ID
, LISTAGG(keyword, ',') AS "keyword concatenated"
FROM table.keywordTbl
GROUP BY ID