複数列のテーブルの単一の列に基づいて重複を削除およびマージして、「垂直サマリー」を作成する方法を知っている人はいますか。
IE)テーブルAからテーブルBを構築しようとしています
Table A:
Person Language
Bob English
Sarah French
John Chinese
Bob French
Sarah English
Sarah Chinese
Table B (RESULT):
Person English French Chinese
Bob Y Y (null)
Sarah Y Y Y
John (null) (null) Y
私が最初にそれを行うことを考えていたのは、データからテーブルAを作成し、次のことを行うことでした。
Create table summary as
Select person, (case when language = 'English' then 'Y') as English, (case when language = 'French' then 'Y') as French, (case when language = 'Chinese' then 'Y') as Chinese
From Table A;
最後に、サマリーテーブルの選択を実行します。ただし、ロジックは間違っています。特に、distinctはすべての列でそうするためですが、私は異なる人の名前だけが必要です。
私が頭の中で考えていたもう1つのオプションは、人の名前と英語、フランス語、中国語の空の列だけが入力されたテーブルを作成することでした。次に、updateステートメントを使用して、表Aとの照合を介してそれらにデータを入力します。
誰かがより良い方法/私がこれを実装する方法を知っていますか?私はまだOracleの学習の初期段階にあり(特にループに関して)、助けていただければ幸いです。
ありがとう!