SQL构建表层次关系,递归累加数据
构建表的上下级关系
有一个需求,表中数据没有关系,如同一个类型的,有多个出库时间。

--构建表的上下级关系
--可以对同一个产品的,有层次关系
--使用ROW_NUMBER(),来构建,最上上一级为0
INSERT INTO Stock
([no] --编号
,[quantity]
,[id]
,[productsysno]
,[intime]
,[parentid])
select no, id,productsysno,id-1 parentid from (
select a.NO, a.quantity,ROW_NUMBER() over(partition by a.productsysno order by b.intime ASC) id ,
productsysno,intime from dbo.PO_It a inner join PO b on a.POSysNo=b.SysNo
and b.status=4 ) t
--可以对同一个产品的,有层次关系
--使用ROW_NUMBER(),来构建,最上上一级为0
INSERT INTO Stock
([no] --编号
,[quantity]
,[id]
,[productsysno]
,[intime]
,[parentid])
select no, id,productsysno,id-1 parentid from (
select a.NO, a.quantity,ROW_NUMBER() over(partition by a.productsysno order by b.intime ASC) id ,
productsysno,intime from dbo.PO_It a inner join PO b on a.POSysNo=b.SysNo
and b.status=4 ) t
效果如图:

--递归累加同一产品的入库数量
with product_cte1(sysno,productsysno,id,lastqty,quantity,Level)
as
(
SELECT [poitemsysno], productsysno,id,quantity,quantity,1 Level from Item_Stock where parentid=0
UNION ALL
SELECT e.[poitemsysno],e.productsysno,e.ID ID,d.quantity,e.quantity+d.quantity,Level+1
FROM dbo.Item_Stock AS e,product_cte1 AS d
where e.parentid = d.id and e.productsysno=d.productsysno
)
--查看数据
select * from
product_cte1 OPTION (MAXRECURSION 0)
with product_cte1(sysno,productsysno,id,lastqty,quantity,Level)
as
(
SELECT [poitemsysno], productsysno,id,quantity,quantity,1 Level from Item_Stock where parentid=0
UNION ALL
SELECT e.[poitemsysno],e.productsysno,e.ID ID,d.quantity,e.quantity+d.quantity,Level+1
FROM dbo.Item_Stock AS e,product_cte1 AS d
where e.parentid = d.id and e.productsysno=d.productsysno
)
--查看数据
select * from
product_cte1 OPTION (MAXRECURSION 0)
分类:
SQL 技巧和优化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具