有关树(家族)的问题

查找所有子节点的问题

create table a( UserID int,     UserName  nvarchar(10),    Ratio int,     Amount int,    FatherID int)
insert into a
select    1,    N'田方',     12,       200,        0 union all
select    2,    N'张三',      8,       100,        1 union all
select    3,    N'李四',     12,       200,        1 union all
select    4,    N'王五',      6,       130,        2 union all
select    5,    N'杨六',      9,       200,        3 union all
select    6,    N'陈七',      4,       190,        2
go

create function f_cid(
@id int
)returns @re table(userid int,[level] int)
as
begin
declare @l int
set @l=0
insert @re select @id,@l
while @@rowcount>0
begin
set @l=@l+1
insert @re select a.userid,@l
from a,@re b
where a.fatherid=b.userid and b.[level]=@l-1
end
return
end
go


select a.*,层次=b.[level],amount*ratio/100 as fee  from a,f_cid(2)b
where a.userid=b.userid
-----------------
select sum(fee)
from(
select a.*,层次=b.[level],amount*ratio/100 as fee  from a,f_cid(2)b
where a.userid=b.userid
)t
go

drop function f_cid
drop table a

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值