mssql多级查询 CTE递归
来源:互联网 发布:怎样建立网络共享 编辑:程序博客网 时间:2024/05/16 10:26
最近做一个制造业项目中涉及到打包问题,其模式为: 一个A->B->C->...可以无限打包,A包含B,B包含C等。
之间遇到了:
1、打包后包裹数量需要更新,更新时必须对他的父级包号也进行更新,所以必须查询出某个包号对应的所有父级包号;
2、拆包(将包裹拆除,希望把A下面的包裹号也连同一起拆除,这样必须查询出某个包号对应的所有子级包号。
后面解决方案:
--建立简单测试打包表CREATE TABLE T_PACK( ID INT IDENTITY(1,1) PRIMARY KEY, packNO VARCHAR(40) NOT NULL, ParentPackNO VARCHAR(40) NULL,PACKQuantity INT)
插入数据方便测试:
INSERT INTO T_PACK(packNO, ParentPackNO,PACKQuantity) VALUES('pack_001',null,1)INSERT INTO T_PACK(packNO, ParentPackNO,PACKQuantity) VALUES('pack_002',null,1)INSERT INTO T_PACK(packNO, ParentPackNO,PACKQuantity) VALUES('pack_003',null,5)INSERT INTO T_PACK(packNO, ParentPackNO,PACKQuantity) VALUES('pack_004','pack_003',1)INSERT INTO T_PACK(packNO, ParentPackNO,PACKQuantity) VALUES('pack_005','pack_003',4)INSERT INTO T_PACK(packNO, ParentPackNO,PACKQuantity) VALUES('pack_006','pack_005',2)INSERT INTO T_PACK(packNO, ParentPackNO,PACKQuantity) VALUES('pack_007','pack_005',2)INSERT INTO T_PACK(packNO, ParentPackNO,PACKQuantity) VALUES('pack_009',null, 7)INSERT INTO T_PACK(packNO, ParentPackNO,PACKQuantity) VALUES('pack_010', null,4)数据表:
通过图中可以看出:pack_007的父级有 pack_005 和pack_003两个
查询所有的父级包号及本身:
WITH CTEGetParent AS ( SELECT * from T_PACK where packNO=@packNO --传入包号'pack_007'UNION ALL (SELECT a.* from T_PACK as a inner join CTEGetParent as b on a.packNO=b.ParentPackNO ) SELECT * FROM CTEGetParent查询结果
查询所有的子级包号及本身:
with area as( select * from T_PACK where packNO=@packNO --传入包号'pack_003'union all select a.* from T_PACK a join area b on a.ParentPackNO=b.packNO )select * from area查询结果:
后面更新数量就通过游标循环ID进行更新。。。。。。
0 0
- mssql多级查询 CTE递归
- CTE递归查询
- SQL递归查询CTE
- CTE 递归查询
- WITH CTE递归查询
- [MSSQL]SQL 关于使用CTE(公用表表达式)的递归查询
- cte递归嵌套查询例子
- SQL CTE WITH 递归查询
- SQL With (递归CTE查询)
- CTE 递归查询全解
- SQL SERVER中CTE语句结构及CTE递归查询
- SQL2005/2008中的CTE应用--递归查询
- SQL2005/2008中的CTE应用--递归查询
- Sql Server 使用CTE实现递归查询
- SQL2005/2008中的CTE应用--递归查询
- SQL Server 2008中的CTE递归查询
- SQL2005/2008中的CTE应用--递归查询
- SQL2005/2008中的CTE应用--递归查询
- STL array的cend方法(6)
- Linux 3.16 release 贡献度
- bootstrap的增强插件
- QT的信号和槽
- 【quick-cocos2d-x 游戏开发】quick cocos2dx 3.2最稳定版 创建工程+sublime调试运行
- mssql多级查询 CTE递归
- ios开发(一)
- 由浅入深学习导航栏CSS样式
- Linux路由应用-使用策略路由实现访问控制
- CSDN使用小技巧
- C# 特殊关键字 const readonly extern unsafe
- SASS简单总结
- 高可用浅谈
- Minimum Depth of Binary Tree