Person (person_id, name) と別のテーブルContacts (person_id, phone_type, phone_no)という 2 つのテーブルがあります。
人 ----------------- person_id 名 ----------------- P1 Abc P2 エクシーズ
連絡先 -------------------------------- person_id phone_type phone_no -------------------------------- P1 phone1 12345 P1 phone2 23455 P2 phone1 67897 P2 phone3 89786
次のようなビュー v_pc を作成する必要があります
v_pc person_id 名前 phone1 phone2 phone3 -------------------------------------- P1 Abc 12345 23455 P2 エクシーズ 67897 89786
つまり、連絡先テーブルの行がピボットされて、ビューの列が形成されます (列の数は、'phone_types' 列の個別の値に基づいて可変になります)。
連絡先テーブルをピボットする方法はありますが、次のような動的ピボットイン句を使用できますか
選択する * から ( 選択する person_idd、 phone_type、 電話番号 連絡先から ) PIVOT (MAX(phone_no) FOR phone_type IN ('phone1','phone2','phone3'))
また、ピボットでXML句を使用しようとしたので、動的なピボットイン句を使用します。つまり、XMLで結果を抽出し、XMLTABLEを使用して列を再作成します。しかし、私は望ましい結果に到達することができません。