我有两个表说人(person_id,name)和另一个表联系人(person_id,phone_type,phone_no)。
人 ----------------- person_id 姓名 ----------------- P1 ABC P2 XYZ
联系人 -------------------------------- person_id phone_type phone_no -------------------------------- P1 电话1 12345 P1 电话2 23455 P2电话1 67897 P2电话3 89786
我需要创建一个看起来像的视图 v_pc
v_pc person_id 姓名 phone1 phone2 phone3 ------------------------------------- P1 美国广播公司 12345 23455 P2 Xyz 67897 89786
即,联系人表的行被旋转以形成视图的列(列数将根据“phone_types”列的不同值而变化)。
有什么办法可以让联系人表旋转,但使用动态旋转子句,比如
选择 * 从 ( 选择 person_idd, 电话类型, 电话号码 来自联系人 ) PIVOT (MAX(phone_no) FOR phone_type IN ('phone1','phone2','phone3'))
我还尝试在带有数据透视的情况下使用 XML 子句,因此使用动态数据透视子句,即提取 XML 中的结果,然后使用 XMLTABLE 重新创建列。但我无法达到预期的结果。