SQL 语句实现最高层到最底层

create table ta ( Assm_no varchar(2),   part_no varchar(2))
insert ta
select      'A',         'C'union all   
select      'C',         'D'union all    
select      'B',         'F'union all   
select      'C',         'E'union all   
select      'E',         'H'union all   
select      'F',         'Q'
用存储过程实现:
create proc test_p @Assm_no varchar(5)
as
begin
declare @i int
set @i=0
select * ,级数=@i into #
from ta where Assm_no=@Assm_no
while @@rowcount>0
begin
set @i=@i+1
insert #
select a.*,级数=@i
from ta a,# b
where b.part_no=a.Assm_no
and b.级数=@i-1
end
select Assm_no=(select Assm_no from # where 级数=(select min(级数)  from # )),part_no
from # a order by part_no
end
测试:
exec test_p 'A'
(所影响的行数为 1 行)


(所影响的行数为 2 行)


(所影响的行数为 1 行)


(所影响的行数为 0 行)

Assm_no part_no
------- -------
A       C
A       D
A       E
A       H

(所影响的行数为 4 行)

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值