【发布时间】:2010-12-09 07:32:42
【问题描述】:
给定一个自引用表
Item
-------------
Id (pk)
ParentId (fk)
带有关联值的相关表
ItemValue
-------------
ItemId (fk)
Amount
还有一些样本数据
Item ItemValues
Id ParentId ItemId Amount
-------------------- ----------------------
1 null 1 10
2 1 3 40
3 1 3 20
4 2 4 10
5 2 5 30
6 null
7 6
8 7
我需要一个 sproc 来获取 Item.Id 并返回直接子代以及所有 ItemValue.Amounts 的总和,以供他们、他们的孩子和他们的孩子一路向下。
例如,如果传入1,则树将为2, 3, 4, 5,直接子节点为2, 3,则输出为
ItemId Amount
------------------
2 40 (values from ItemIds 4 & 5)
3 60 (values from ItemId 3)
应该采用什么样的方法来实现这种行为?
我正在考虑使用 CTE,但想知道是否有更好/更快的方法。
【问题讨论】:
-
SQL Server 2005,我也会重新标记
标签: sql sql-server sql-server-2005 tsql hierarchical