[英]SQL concatenate rows into one field (DB2)
我需要從DB2數據庫中提取一些數據。 我在一個表中有關鍵字,每個關鍵字都是一個單獨的行。 在提取中,我希望將所有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
也不起作用。
當然,這些都不起作用......
你有什么提示嗎?
如果你有DB2 v9.7+
,你也可以使用LISTAGG()
函數。 第一個參數是列,第二個是分隔符。
SELECT
ID
, LISTAGG(keyword, ',') AS "keyword concatenated"
FROM table.keywordTbl
GROUP BY ID
嘗試相應地修改查詢以下腳本
SELECT
ID,
SUBSTR(xmlserialize(xmlagg(xmltext(CONCAT( ', ',keyword))) as VARCHAR(1024)), 3) AS "keyword concatenated"
FROM table.keywordTbl
GROUP BY ID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.