電子書籍の厳選無料作品が豊富!

いつもこちらではお世話になっております。
SQL server を使用しています。
データを整理したいのですが、スクリプトが分からないため質問させてください。

下記のようなデータがあります
(codeと購入品そのものは直接のリンクはしていません)

客id  購入品  code1 code2 code3 code4
A    桃     0     1   0  0
A    苺    1    0   0  0
A    梨    0    0   1  0
B    梨    1    0   0  0
B    苺    0    0   0  1
C    桃    1    0   0  0

これを、最終的には客idで1行にしたいです(下記のように)。
(「購入品」の列は消えても構いません)
(nullではなく0でも可)

客id code1 code2 code3 code4
A   苺   桃   梨   null
B   梨   null null 苺
C   桃   null null null

これをSQLで指令を出す場合、
 1 ​code1 が1の場合、「code1 に『購入品』を置き換える」
   code2が1の場合、「code2に『購入品』を置き換える」 
            code4まで繰り返す
 2 客idで統合(group by?)

という流れだと思うのですが、どういったスクリプトを書けばいいのか分かりません。
(同じ客で、codeが重複することはありません)

手間がかかるやり方でも構いませんので、最終的に客idで1行が作れれば大丈夫です。
詳しい方、よろしくお願いします。

A 回答 (1件)

SELECT 客id


, MAX(CASE code1 WHEN 1 THEN 購入品 END) AS code1
, MAX(CASE code2 WHEN 1 THEN 購入品 END) AS code2
, MAX(CASE code3 WHEN 1 THEN 購入品 END) AS code3
, MAX(CASE code4 WHEN 1 THEN 購入品 END) AS code4
FROM テーブル
GROUP BY 客id
ORDER BY 客id
ってな感じかな。
    • good
    • 0
この回答へのお礼

ありがとうございます!
できました!
ベストアンサー3つくらい差し上げたいです。

ありがとうございました!!

お礼日時:2021/05/04 21:14

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

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