27,582
社区成员




--都是一句话
select a.名称,b.名称 AS 上级名称 from 你的表名 a LEFT JOIN 你的表名 b ON a.上级ID=b.ID
create table t1(id int,名称 varchar(10),上级id int)
insert t1
select 0, '总公司', 0 union all
select 1, '技术部', 0 union all
select 2, '研发部', 1 union all
select 3, '销售部', 0
go
select 名称,上级名称=(select 名称 from t1 where id=a.上级id ) from t1 as a
/*
名称 上级名称
--- ------
总公司 总公司
技术部 总公司
研发部 技术部
销售部 总公司
*/
go
drop table t1
上面的是关联到他的ID 所以改成关联
if OBJECT_ID('tb') is not null
drop table tb
go
create table tb(ID INT,名称 varchar(50),上级ID INT)
insert into tb
select 0,'总公司',0 union all
select 1,'技术部',0 union all
select 2,'研发部',1 union all
select 3,'销售部',0
--名称 上级名称
--总公司 总公司
--技术部 总公司
--研发部 技术部
--销售部 销售部
select a.名称,b.名称 AS 上级名称 from tb a LEFT JOIN tb b ON a.上级ID=b.ID
(4 行受影响)
名称 上级名称
-------------------------------------------------- --------------------------------------------------
总公司 总公司
技术部 总公司
研发部 技术部
销售部 总公司
(4 行受影响)
if OBJECT_ID('tb') is not null
drop table tb
go
create table tb(ID INT,名称 varchar(50),上级ID INT)
insert into tb
select 0,'总公司',0 union all
select 1,'技术部',0 union all
select 2,'研发部',1 union all
select 3,'销售部',0
--名称 上级名称
--总公司 总公司
--技术部 总公司
--研发部 技术部
--销售部 销售部
select 名称,case when 名称='总公司' or 名称='技术部' then '总公司' when 名称='研发部' then '技术部' else 名称 end as '上级名称' from tb
(4 行受影响)
名称 上级名称
-------------------------------------------------- --------------------------------------------------
总公司 总公司
技术部 总公司
研发部 技术部
销售部 销售部
(4 行受影响)
declare @t table (ID int,名称 varchar(6),上级ID int)
insert into @t
select 0,'总公司',0 union all
select 1,'技术部',0 union all
select 2,'研发部',1 union all
select 3,'销售部',0
select a.名称,b.名称 AS 上级名称 from @t a LEFT JOIN @t b ON a.上级ID=b.ID
/*
名称 上级名称
------ ------
总公司 总公司
技术部 总公司
研发部 技术部
销售部 总公司
*/
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([ID] int,[名称] varchar(6),[上级ID] int)
insert [tb]
select 0,'总公司',0 union all
select 1,'技术部',0 union all
select 2,'研发部',1 union all
select 3,'销售部',0
select a.名称,isnull(b.名称,a.名称) as 名称
from tb a
left join tb b on a.上级ID=b.id
--测试结果:
/*
名称 名称
------ ------
总公司 总公司
技术部 总公司
研发部 技术部
销售部 总公司
(4 行受影响)
*/