表A是编码表
code  name
0001  体系
0002  部门
0003  科室表B是人员表
姓名  体系  部门  科室
张三  0001  0002  0003可不可以查询出来结果为:
姓名  体系  部门  科室
张三  体系  部门  科室

解决方案 »

  1.   

    declare @a table
    (
    code varchar(4),
    name varchar(4)
    )
    insert into @a
    select '0001','体系' union all
    select '0002','部门' union all
    select '0003','科室'declare @b table
    (
    姓名 varchar(4),
    体系 varchar(4),
    部门 varchar(4),
    科室 varchar(4)
    )
    insert into @b
    select '张三','0001','0002','0003'select
    姓名,
    (select name from @a where code=a.体系) as 体系,
    (select name from @a where code=a.部门) as 部门,
    (select name from @a where code=a.科室) as 科室
    from @b a/*
    姓名   体系   部门   科室   
    ---- ---- ---- ---- 
    张三   体系   部门   科室
    */
      

  2.   

    --这样?
    declare @t table(code varchar(10),name varchar(10))
    insert @t select '0001','体系'
    union all select '0002','部门'
    union all select '0003','科室'
    declare @t1 table(姓名 varchar(10),体系 varchar(10),部门 varchar(10),科室 varchar(10))
    insert @t1 select '张三','0001','0002','0003'
     select A.姓名,B.name,c.name,d.name
    from @t1 A inner join @t B on A.体系=B.code
               inner join @t C on A.部门=C.code
               inner join @t d on A.科室=d.code