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的内容,每次可以查询不同的内容
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的内容,每次可以查询不同的内容
就是可以根据employee_no和后面的任一字段名("hr"等)查询此字段的内容,hr的要显示表B中的display_name,其余的直接显示就行。
比如参数为employee_no="101",rolename="hr",查询后结果应该为emma
再比如参数为employee_no="101",rolename="leader1",查询后结果应该为g1
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
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
这里的*可不可以是变量什么的?
( @employeeNo varchar(10),
@role varchar(50)
)AS
SELECT A.[@role]
......
这样写可以吗?