要組一台 BMW?
在這個練習中,你要回答這個問題:在階層到第 3 層之前,組裝汽車所需的每個元件總數量 Total 是多少?
你的任務是建立 CTE construction_Plan,用來追蹤元件的層級,並在欄位 Total 中計算元件的總數量。資料表包含欄位 PartID、SubPartID、Level、Component 和 Total。你需要納入從第 1 層到第 3 層的所有元件。
本練習屬於課程
SQL Server 的階層式與遞迴查詢
練習說明
- 定義具備所需欄位的
construction_Plan。 - 在
CTE的錨點(anchor)元素中,以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;