こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

回答受付中の質問

複数行を1レコードにまとめたい

1つのテーブルでカラムAに個人を特定する情報、カラムBに個人情報の項目、カラムCにその値が設定されています。
カラムBは個人によって登録されている数が異なります。
カラムBから必要な項目を特定して個人を1レコードに集約して抽出したいと思っているのですが、どのようにSQLを作成すればよいでしょうか?

作成してみたSQLでは1レコードに1カラムずつしか値が入らないため、複数行となってしまうのでまとめたいという状況です。

データ
カラムA, カラムB, カラムC
-------------------------
KOJIN1, AAA, MOJI1
KOJIN1, BBB, MOJI2
KOJIN2, AAA, MOJI3
KOJIN3, BBB, MOJI4
KOJIN3, CCC, MOJI5

select カラムA, case when カラムB = AAA then カラムC end カラムAAA, case when カラムB = BBB then カラムC end カラムBBB
from テーブル

結果
カラムA, カラムAAA, カラムBBB
-----------------------------
KOJIN1, MOJI1,
KOJIN1, , MOJI2
KOJIN2, MOJI3,
KOJIN3, , MOJI4
↑KOJIN1, MOJI1, MOJI2 のように出力したい

初歩的な質問かもしれませんが、よろしくお願いします。

投稿日時 - 2018-10-05 17:47:10

QNo.9544535

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

単純にグループでまとめるでダメなの?

select カラムA,
max(case when カラムB = 'AAA' then カラムC else null end) カラムAAA,
max(case when カラムB = 'BBB' then カラムC else null end) カラムBBB,
max(case when カラムB = 'CCC' then カラムC else null end) カラムCCC
from テーブル
group by カラムA;

投稿日時 - 2018-10-18 16:53:00

ANo.1

このテーブルには、キーがない。どのデータも複数あり正規化されていない。
まず、データーベースとは、どのようなものか基本を習得するべきだと思います。

投稿日時 - 2018-10-06 16:19:45

あなたにオススメの質問