组装一辆 BMW?
本练习要回答的问题是:在层级结构中直到第 3 层,构建整车所需的每个部件的总数量 Total 是多少?
您的任务是创建 CTE construction_Plan,用于跟踪部件的层级,并在字段 Total 中计算部件的总数量。该表包含字段 PartID、SubPartID、Level、Component 和 Total。您需要考虑从第 1 层到第 3 层的所有部件。
本练习是课程的一部分
SQL Server 中的分层与递归查询
练习说明
- 定义包含必要字段的
construction_Plan。 - 在
CTE的锚点部分,用Quantity初始化Total。 - 在递归部分,用子元素的
Quantity增加Total。 - 使用
SUM()在按层级 ID 聚合后的信息上,对Total求和。
交互式实操练习
通过完成这段示例代码来试试这个练习。
-- Define CTE with the fields: PartID, SubPartID, Level, Component, Total
WITH ___ (___, ___, ___, ___, ___) AS (
SELECT
PartID,SubPartID,
0,
Component,
-- Initialize Total
___
FROM partList
WHERE PartID = '1'
UNION ALL
SELECT
CHILD.PartID, CHILD.SubPartID,
PARENT.Level + 1,
CHILD.Component,
-- Increase Total by the quantity of the child element
PARENT.___ + CHILD.___
FROM construction_Plan PARENT, partList CHILD
WHERE CHILD.SubPartID = PARENT.PartID
AND PARENT.Level < 3)
SELECT
PartID, SubPartID,Component,
-- Calculate the sum of total on the aggregated information
___(___)
FROM construction_Plan
GROUP BY PartID, SubPartID, Component
ORDER BY PartID, SubPartID;