重分求SQL语句!!!!!!!!!!!!!!!!!!!!
我有个树状图,
节点数据库的字段 分为 code(代码) ,level(层次), upcode(父节点代码)
比如
code level upcode
01 1 null
0101 2 01
02 1 null
0201 2 02
0202 2 02
020203 3 0202
...
我现在用一个SQL语句得到每个节点的第1层次的父节点代码
比如按照上面数据得到
code firstupcode
01 01
0101 01
02 02
0201 02
0202 02
020203 02
不要用 left(code,2)因为可能节点代码不是这样按照规矩的
------解决方案--------------------对不起,没看到你要递归,恐怕要写存储过程了.
要不然你就要一百几十张表自关联
------解决方案--------------------set nocount on
declare @a table(code varchar(10), level int, upcode varchar(20),firstdot varchar(10),levelx int)
insert @a select '01 ', 1 , null,null,null
union all select '0101 ', 2 , '01 ',null,null
union all select '02 ', 1 ,null,null,null
union all select '0201 ', 2 , '02 ',null,null
union all select '0202 ', 2 , '02 ',null,null
union all select '020203 ', 3 , '0202 ',null,null
union all select '02020304 ', 4 , '020203 ',null,null
declare @i int
select @I=max(level) from @a
update @a set upcode=code where upcode is null
update @a set levelx=level,firstdot=upcode
while @i> 0
begin
update a set firstdot=b.firstdot,levelx=@i-1 from @a a ,@a b where a.firstdot=b.code and a.levelx=@I
set @i=@i-1
end
select * from @a