不知道怎么做,需要求助

解决方案 »

  1.   

    select p.id_p,p.name,p.address,v1.value phone,v2.value ID,v3.value  Department 
    from person p,value v1,value v2,value v3
    where p.id_p=v1.id_p(+) 
    and v1.type(+)='Phone'
    and p.id_p=v2.id_p(+) 
    and v2.type(+)='ID'
    and p.id_p=v3.id_p(+) 
    and v3.type(+)='Department'
    and exists(
    select * from value v4 where v4.id_p=p.id_p
    )select p.id_p,p.name,p.address,
    (select value from value v1 where v1.id_p=p.id_p and v1.type='Phone') phone,
    (select value from value v1 where v1.id_p=p.id_p and v1.type='ID') id,
    (select value from value v1 where v1.id_p=p.id_p and v1.type='Department') department
    from person p 
    where exists(
    select * from value v4 where v4.id_p=p.id_p
    )
      

  2.   

    select p.ID_P
             ,max(p.Name)  as Name
             ,max(p.Address) as Address
             ,max(case when v.Type='Phone' then v.Value else '' end)  as Phone
             ,max(case when v.Type='ID' then v.Value else '' end)  as ID
             ,max(case when v.Type='Department' then v.Value else '' end)  as Department
    from person p left join value  v on p.ID_P=v.ID_P
    group by p.ID_P