我有一个来自应用程序的源表,如下所示
ID NAME PHONETYPE PHONENO CUSTOMERID CUSTOMER NAME
1 Chris Work 1234567890 3 Sony
1 Chris Work 1234567890 4 TOM
1 Chris Mobile 0123456789 3 Sony
1 Chris Mobile 0123456789 4 TOM
1 Chris Fax 0000111111 3 Sony
1 Chris Fax 0000111111 4 TOM
2 Ryan Work 1111122222 5 Mary
2 Ryan Work 1111122222 6 Joe
2 Ryan Mobile 2222233333 5 Mary
2 Ryan Mobile 2222233333 6 Joe
我想使用源表数据插入到目标表B中,如下所示。 如您所见,联系信息被展平为列,其中客户信息仍然是行的形式。我怎样才能在Oracle sql中实现这一点。
ID NAME WORKNO MOBILENO FAXNO CUSTOMERID CUSTOMERNAME
1 Chris 1234567890 0123456789 0000111111 3 Sony
1 Chris 1234567890 0123456789 0000111111 4 Tom
2 Ryan 1111122222 2222233333 NULL 5 Mary
2 Ryan 1111122222 2222233333 NULL 6 Joe
答案 0 :(得分:0)
使用条件逻辑和聚合如下:
select id, name, max(case when phonetype='work' then phonno else null end) workno,
max(case when phonetype='mobile' then phonno else null end) mobileno,
max(case when phonetype='fax' then phonno else null end) faxno, customerid,
[customer name]
from yourtable group by id, name,customerid,
[customer name]