就你给出的表结构,你这样写没什么问题。不知道你的需求是什么,我总觉得表audit设计有问题,create table audit (
   code                 varchar(16)          not null,
   person_id           varchar(16)          not null,
   constraint pk_audit primary key  (code,person_id)
)
这样的话,是不是以后扩展起来也方便一些呢?拙见~~~

解决方案 »

  1.   

    select 
        t.person_id1,
        max(case when person_id1 = v.person_id then v.person_name end),
        t.person_id2,
        max(case when person_id2 = v.person_id then v.person_name end),
        t.person_id3,
        max(case when person_id3 = v.person_id then v.person_name end),
        t.person_id4,
        max(case when person_id4 = v.person_id then v.person_name end),
        t.person_id5,
        max(case when person_id5 = v.person_id then v.person_name end) 
    from 
        audit t 
    corss join 
        person v
    where 
        t.code='501'
    group by
        t.person_id1,t.person_id2,t.person_id3,t.person_id4,t.person_id5
      

  2.   

    select a.code,b.person_name,c.person_name,d.person_name,e.person_name,f.person_name
    from audit a,person b,person c,person d,person e,person f
    where a.person_id1=b.person_id and a.person_id2=c.person_id and a.person_id3=d.person_id and a.person_id4=e.person_id and a.person_id5=f.person_id
      

  3.   

    select code, 
    (select person_name from person where person_id = a.person_id1) as person_name1, 
    (select person_name from person where person_id = a.person_id2) as person_name2, 
    (select person_name from person where person_id = a.person_id3) as person_name3, 
    (select person_name from person where person_id = a.person_id4) as person_name4, 
    (select person_name from person where person_id = a.person_id5) as person_name5
    from audit a
      

  4.   

    表結構設計得不合理﹐同意一樓的修改select t.person_id1,(select person_name from person where person_id1=t.person_id2) as person_name1,...
    from audit t 
    inner join person v on t.person_id1= v.person_id