日期:2014-05-17  浏览次数:20537 次

SQL语句如何写???
表格A:
OrgUnitName Manager
一部 a124  
二部 b124  
三部 c124  

表格B:
HumanId HumanName IdNo Manager
a123 李一 123 a124  
a124 赵二 124 a124  
a125 张三 125 b124  
b124 王五 126 b124  

想得到的查询结果:
IdNo HumanName HumanName Manager 
123 李一 一部 赵二  
124 赵二 一部 赵二  
125 张三 二部 王五  
126 王五 二部 王五  

如何得到这个结果?

------解决方案--------------------

select b.idno,b.humanname,orgunitname,c.humanname
from A as a inner join B as b on a.manager=b.manager left join B as c on b.manager=c.humanid
------解决方案--------------------
if object_id('[A]') is not null drop table [A]
go
create table [A]([OrgUnitName] varchar(4),[Manager] varchar(4))
insert [A]
select '一部','a124' union all
select '二部','b124' union all
select '三部','c124'
go
if object_id('[B]') is not null drop table [B]
go
create table [B]([HumanId] varchar(4),[HumanName] varchar(4),[IdNo] int,[Manager] varchar(4))
insert [B]
select 'a123','李一',123,'a124' union all
select 'a124','赵二',124,'a124' union all
select 'a125','张三',125,'b124' union all
select 'b124','王五',126,'b124'
go

select b.idno,b.humanname,a.orgunitname,c.humanname as manager
from b 
left join a on b.manager=a.manager
left join b as c on b.manager=c.humanid

/**
idno humanname orgunitname manager
----------- --------- ----------- -------
123 李一 一部 赵二
124 赵二 一部 赵二
125 张三 二部 王五
126 王五 二部 王五

(4 行受影响)
**/