DB2データベースからデータを抽出する必要があります。 1つのテーブルにキーワードがあり、各キーワードは個別の行です。抽出では、すべてのIDのすべてのキーワードを、コンマで区切られた1つのストリングにしたいと考えています。
だから、説明する:私はそのようなデータを持っています
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
も機能していません。
もちろん、これらのどれも動作しません...
私に何かヒントはありますか?
以下のスクリプトに従ってクエリを変更してみてください
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()
関数も使用できます。最初のパラメーターは列、2番目のパラメーターはセパレーターです。
_SELECT
ID
, LISTAGG(keyword, ',') AS "keyword concatenated"
FROM table.keywordTbl
GROUP BY ID
_