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

再求一个sql语句,谢谢。
表a

指标序号  名称 上级指标
1         xx    0
2         yy    0
3         ii    1
4         oo    1
5         zz    3
6         tt    3

表b
序号  分组名  指标序号(与表a指标序号关联)
1     考核组    5
2     考核组   6

给出的条件是“考核组”,求出相关联的指标序号及其上级序号,
结果就是
指标序号   名称
1         xx    
3         ii    
5         zz    
6         tt    






------解决方案--------------------
--SQL2000
SET NOCOUNT ON 
DECLARE @a TABLE(指标序号 int,名称 VARCHAR(20), 上级指标 int)
insert @a select 1         ,'xx',    0
union all select 2         ,'yy',    0
union all select 3         ,'ii',    1
union all select 4         ,'oo',    1
union all select 5         ,'zz',    3
union all select 6         ,'tt',    3
DECLARE @b TABLE(序号 int,  分组名 varchar(20),  指标序号 int)
insert @b select 1     ,'考核组',    5
union all select 2     ,'考核组',   6

DECLARE @c TABLE(指标序号 int,名称 VARCHAR(20), 上级指标 int)
INSERT @c SELECT * FROM @a WHERE 指标序号 in(select 指标序号 from @b where 分组名='考核组')

WHILE @@rowcount>0
INSERT @c SELECT * FROM @a WHERE 指标序号 in(select 上级指标 from @c) and 指标序号 not in(select 指标序号 from @c)
SELECT * from @c ORDER BY  指标序号
/*指标序号