sql 树形累加函数的实现

本文介绍了如何在SQL中实现树形结构的累加功能。针对一个包含id、parentid和quantity字段的Category表,需求是根据parentid获取其所有子类的汇总quantity。举例来说,当输入parentID为1时,期望结果应将所有子类的quantity累加,形成新的展示表。文章详细阐述了具体的SQL实现方法。
摘要由CSDN通过智能技术生成

比如一个树形结构表Category是这样的

id    parentid    quantity

2         1                15

3         1                35 

4         3                40

5         1                8

8         4                15

 

需求:根据一个parentid,算出其下一层的子类列表,并将其下一层的下一层的……子类归并到 下一层并展示,主要用于累死与报表分类的挖掘。

那么例如我传的parentID为1,最后生成的表应该是这样的

id    parentid   quantity

2         1                15

3         1                90  ---------原表第五行归并到第三行,然后第三行合并到原表第二行

5         1                8

 

具体实现sql

CREATE FUNCTION [dbo].[FN_Get_StatCategory]
(@n_id INT)   --传入的parentid
RETURNS @returntable table(id bigint
				,parentid bigint 
				,quantity int
				,lev int)
AS
BEGIN
	--临时表用来存读取出来的目录并标示分好目录的层级
	 declare @tb table(nid int,pid int,nlev int)
   	--@lev用来存当前读取目录的层级 
	declare @lev int
	 declare @nlev
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值