table A:
employee_no,hr,leader1,leader2,leader3
101         201  g1       g2      g3
....
employee_no和hr都对应于下表中的employee_no,leader1,2,3与下表无关。
table B:
employee_no,display_name
101          jason
201          emma

要根据employee_no和leader或者hr的名称(如"hr","leader1"等),查询对应名称的详细内容,返回指定名称的内容。
比如可以查询 employee_no为101的hr的名字,也可以查询employee_no为101的leader1的内容,每次可以查询不同的内容

解决方案 »

  1.   

    我也觉得很别扭。
    就是可以根据employee_no和后面的任一字段名("hr"等)查询此字段的内容,hr的要显示表B中的display_name,其余的直接显示就行。
     比如参数为employee_no="101",rolename="hr",查询后结果应该为emma
     再比如参数为employee_no="101",rolename="leader1",查询后结果应该为g1
      

  2.   

    〉〉可以查询 employee_no为101的hr的名字,也可以查询employee_no为101的leader1的内容,每次可以查询不同的内容那就多写几个sql语句...
      

  3.   

    select * from a,b where a.employee_no=b.employee_no
      

  4.   

    declare @str varchar(20)
    set @str='查询的条件'
    select a.*,b.display_name as hr名称,c.display_name as employee名称 from 
    (
    select * from tableA a 
    left join TableB b on (a.hr=b.employee_no ) 
    left join TableB c on (a.employee_no=b.employee_no ) ) aa where hr名称=@str or employee名称=@str or leader1=@str or leader2=@str or leader3=@str
      

  5.   

    上面写错了
    declare @str varchar(20)
    set @str='查询的条件'
    select * from 
    (
    select a.*,b.display_name as hr名称,c.display_name as employee名称 from tableA a 
    left join TableB b on (a.hr=b.employee_no ) 
    left join TableB c on (a.employee_no=b.employee_no ) ) aa where hr名称=@str or employee名称=@str or leader1=@str or leader2=@str or leader3=@str
      

  6.   

    select a.* , b.* from a , b where a.employee_no = b.employee_no or a.hr = b.employee_no
      

  7.   

    select * from 
    这里的*可不可以是变量什么的?
      

  8.   

    可以的,大致的sql语句楼上的已经写出来了,你在此基础上将你每次要查询的列名也作为另一个变量传进去应该就可以了。
      

  9.   

    CREATE PROCEDURE [dbo].[usp_Approver_GetApproverByRoleandEmployeeNo]
    (         @employeeNo varchar(10),
              @role varchar(50)
      )AS
     SELECT A.[@role]
    ......

    这样写可以吗?