关于形成树形结构,数据累加显示的问题

coolbird8 2015-11-06 06:29:15


第一次发图不知道能看到吗。

ID TOPID Money ISlast ,name
通过 id topid 进行分级。topid = “0000000”表示最上一级 islast = 1表示最后一级

islast = 0表示不是最后一级

在数据库中只有islast = 1里的money有钱

最上级有好几个

我想实现的目标是。将上级的钱为其下集的钱的和。一级一级的相加。所有级数都有钱显示。

请大神们帮助下。。。我使用treetable已经将name形 成了树形表格,但是money列的钱不行。。。能通过数据库实现吗。我直接绑在标签上。



...全文
165 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Tiger_Zhao 2015-11-09
WITH 
/* 测试数据
table1(id,topid,money,isLast)AS(
SELECT 1,0,0,0 UNION ALL
SELECT 2,1,0,0 UNION ALL
SELECT 3,1,100,1 UNION ALL
SELECT 4,2,20,1 UNION ALL
SELECT 5,2,30,1
), */
a AS (
-- 取最后一级的金额
SELECT id,topid,money
FROM table1
WHERE isLast = 1
UNION ALL -- 每个金额的每个上级都递归生成一条明细
SELECT p.id,p.topid,c.money
FROM table1 p
JOIN a c
on c.topid = p.id
)
,b AS (
SELECT id,
SUM(money) money
FROM a
GROUP BY id
)
SELECT *
FROM b
ORDER BY id

         id       money
----------- -----------
1 150
2 50
3 100
4 20
5 30

把这个b和你的treetable用id关联起来。
回复
Tiger_Zhao 2015-11-09
[Quote=引用 2 楼 a504268 的回复:]楼上的是2层父子关系的[/Quote]
不懂不要乱说!
递归表达式没有层次限制。
回复
洞穿秋水 2015-11-09
这是典型的父子维吧,把父子关系拉成横向的,就可以了,楼上的是2层父子关系的,你的关系复杂要写个循环
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

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