首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

由叶子节点的值反算下边各级节点的值

2012-11-04 
由叶子节点的值反算上边各级节点的值小弟现在在做一个程序,由于叶子节点有重量,上级节点的值又是其下级节

由叶子节点的值反算上边各级节点的值
小弟现在在做一个程序,由于叶子节点有重量,上级节点的值又是其下级节点值的和,不知如何实现。
例如:
上级节点 下级节点 重量
A B
A C
B D
B E 5
C F 17
D G 10
如何通过叶子节点E、F、G的重量求出上级节点A、B、C、D的重量

[解决办法]

SQL code
IF OBJECT_ID('test') IS NOT NULL DROP TABLE test go CREATE TABLE test (上级节点 VARCHAR(10), 下级节点 VARCHAR(10), 重量 INT ) GO INSERT INTO test  SELECT 'A','B',NULL  UNION ALL  SELECT 'A','C',NULL  UNION ALL  SELECT 'B','D',NULL  UNION ALL  SELECT  'B','E',5 UNION ALL  SELECT  'C','F',17 UNION ALL  SELECT  'D','G',10  ;WITH cte AS  ( --先找出叶子节点 SELECT 上级节点 , 下级节点 , 重量 FROM test  WHERE 重量 IS NOT NULL  UNION ALL  --找出叶子节点的上级节点及上级节点的上级节点,以此类推 SELECT b.上级节点,b.下级节点,a.重量 FROM cte a INNER JOIN test b ON a.上级节点=b.下级节点  ) SELECT 上级节点 节点, SUM(重量) 重量 FROM cte GROUP BY 上级节点   /* 节点         重量 ---------- ----------- A          32 B          15 C          17 D          10  (4 行受影响)  */ 

热点排行
Bad Request.