簡體   English   中英

SQL將行連接到一個字段(DB2)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM