アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記の様テーブルより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です。

どなたかご教示頂けますと幸いです。

A 回答 (1件)

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で使えればいいのですが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す