Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【PL/SQL】レコードの縦横変換

More than 1 year has passed since last update.

レコードの縦横変換

やりたいこと

下記の表のように発注ごとに商品の売り上げ金額を持っているような場合に、発注IDごとの集計をするために縦横変換を行いたい。

元データ

発注ID 商品 金額
TK001 コーヒー 200
TK001 緑茶 300
TK001 ほうじ茶 400
TK002 コーヒー 500
TK002 ほうじ茶 600

縦横変換後

発注ID コーヒー 緑茶 ほうじ茶
TK001 200 300 400
TK002 500 0 600

サンプルコード

発注IDごとにデータをGROUP BYを行い、その合計額を取ります。
合計額にする必要がない場合はSUMMAXなどに変え、1レコードのみ取得するなどの方法が取れます。

SELECT 発注ID,
       SUM(CASE WHEN 商品 = 'コーヒー' THEN 金額 END) AS コーヒー,
       SUM(CASE WHEN 商品 = '緑茶'     THEN 金額 END) AS 緑茶,
       SUM(CASE WHEN 商品 = 'ほうじ茶' THEN 金額 END) AS ほうじ茶
FROM 元データ
GROUP BY 発注ID
;
t-kikuchi
都内SEです。忘れがちな基礎をメモしています。
https://outdoor-development.work/index/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away