数据累加的问题

coolbird8 2015-11-04 06:42:12
有一张表
字段为: id,topid,money,islast,name

这样形成一个树形结构,islast= 1表示树形结构为最后一级,最后一级的money有钱的
但是我想让他的上级,上上级,一直上到最上面的级的钱。进行累加。如何做呢。

...全文
108 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Mac_麦铁锤 2015-11-04

--Test Environment

create table [GPOLAP].[dbo].[UNKNOWN](
id int,
topid int,
money_dec int,
islast int,
name varchar(20)
)

insert into [GPOLAP].[dbo].[UNKNOWN] values(1,0,15,3,'test123')
insert into [GPOLAP].[dbo].[UNKNOWN] values(2,1,35,2,'test123')
insert into [GPOLAP].[dbo].[UNKNOWN] values(4,1,5,2,'test123')
insert into [GPOLAP].[dbo].[UNKNOWN] values(3,2,76,1,'test123')
insert into [GPOLAP].[dbo].[UNKNOWN] values(5,4,43,1,'test123')

--Recursive query via CTE
WITH [UNKNOWN_CTE] AS
( 
SELECT id, topid, money_dec, islast,name
FROM [GPOLAP].[dbo].[UNKNOWN]
WHERE islast = 1 and id = 3 -- assume we are looking for the ancestors of id = 3
UNION ALL
SELECT a.id, a.topid,  a.money_dec, a.islast,a.name
FROM [GPOLAP].[dbo].[UNKNOWN] a 
INNER JOIN [UNKNOWN_CTE] s ON a.id = s.topid
)
select * from [UNKNOWN_CTE]  -- or SUM(money_dec) to get total amount
这个给你做个参考~我没用variable,比较懒
回复
Mac_麦铁锤 2015-11-04
可以declare 一个global variable 来记录钱的总值,然后写一个recursive query来走,每层的时候吧钱加在variable里~ -- i could be wrong
回复
misterliwei 2015-11-04
用几行数据,结果是什么。举个例子。
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-11-04 06:42
社区公告
暂无公告