BOM树结构处理(最后一层的QTY给第一层)

DECLARE @table TABLE(ID INT,QTY INT,PID INT)
INSERT INTO @table
SELECT 1,0,2 UNION ALL
SELECT 2,0,3 UNION ALL
SELECT 3,30,4 UNION ALL

SELECT 10,0,11 UNION ALL
SELECT 11,23,12 UNION ALL

SELECT 20,15,21

SELECT * FROM @table

结果为
ID QTY
----------- -----------
1 30
10 23
20 15


--树结构,但是没有规律,只要取最后一层的QTY给第一层就可以了.

--小梁

DECLARE @table TABLE(ID INT,QTY INT,PID INT)
INSERT INTO @table
SELECT 1,0,2 UNION ALL
SELECT 2,0,3 UNION ALL
SELECT 3,30,4 UNION ALL

SELECT 10,0,11 UNION ALL
SELECT 11,23,12 UNION ALL

SELECT 20,15,21

;
WITH Liang AS
(
SELECT *,flag=ID
FROM @table AS A
WHERE NOT EXISTS(SELECT * FROM @table WHERE PID = A.ID)
UNION ALL
SELECT A.*,B.flag FROM @table AS A
JOIN Liang AS B
ON A.ID = B.PID
)
SELECT A.flag AS ID,QTY FROM Liang AS A
WHERE NOT EXISTS(SELECT * FROM Liang WHERE flag=A.flag AND ID > A.ID)
ORDER BY 1

/*
ID QTY
----------- -----------
1 30
10 23
20 15

(3 行受影响)
*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值