- 締切済み
PostgreSQLでの複数結果のまとめ方
下記の様テーブルよりproduct_idごとに【結果】の様な形として 出力したいと考えております。 【TableA】 order_id|product_id|product_name | quantity 001 product001 商品名1 2 002 product001 商品名1 1 002 product002 商品名2 2 003 product002 商品名2 1 003 product003 商品名3 1 【結果】 product_id|product_name|quantity|order_id product001 商品名1 3 001, 002 product002 商品名2 3 002, 003 product003 商品名3 1 003 SELECT product_id, max(product_name), sum(quantity), order_id FROM TableA GROUP BY product_id, order_id としてみたのですが、 product_id|product_name|quantity|order_id product001 商品名1 3 001 product001 商品名1 1 002 product002 商品名2 2 002 product002 商品名2 1 003 product003 商品名3 1 003 となってしまい、order_idを上記の様にセルにまとめて表示する方法をお教え頂けますと幸いです。 MySQLではGROUP_CONCAT関数を使う事で実現出来たのですが PostgreSQLでの実現方法が分かりかねています。 尚、PostgreSQLのバージョンはPostgreSQL 8.1.23です。 どなたかご教示頂けますと幸いです。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- maiko0318
- ベストアンサー率21% (1483/6969)
db2 "CREATE TABLE TableA (order_id char(3),product_id char(10), product_name char(20), quantity int)" db2 "INSERT INTO TableA VALUES ('001','product001','商品名1',2),('002','product001','商品名1',1),('002','product002','商品名2',2),('003','product002','商品名2',1),('003','product003','商品名3',1)" db2 "SELECT product_id, max(product_name), sum(quantity), substr(xmlserialize(xmlagg(xmltext(concat(', ',order_id))) as varchar(50)),3) FROM TableA GROUP BY product_id" PRODUCT_ID 2 3 4 ---------- -------------------- ----------- -------------------------------------------------- product001 商品名1 3 001, 002 product002 商品名2 3 002, 003 product003 商品名3 1 003 3 レコードが選択されました。 当方、DB2で実行しています。PostgreSQLで使えればいいのですが。