保守対象の送電線を取得する
提供された GridStructure テーブルには、線路同士の接続を表すフィールド(EquipmentID、EquipmentID_To、EquipmentID_From)と、線路の特性(例:Description、ConditionAssessment、VoltageLevel)がすでに定義されています。
ここでは、EquipmentID = 3 の線路に接続していて、ConditionAssessment が bad または repair、かつ VoltageLevel が HV の線路を探します。これにより、次の問いに答えられます。
記述と現在の状態に基づいて、どの線路を交換または修理すべきでしょうか?
接続している線路を見つけるために CTE を作成し、最後に目的の特性でフィルタリングしてください。
この演習はコースの一部です
SQL Server における階層型クエリと再帰クエリ
演習の手順
- CTE
maintenance_Listを定義します。 - 線路 3 から評価を開始します。
- 対応する端点で
GridStructureとmaintenance_Listを結合します。 LIKEを使い、ConditionAssessmentがexchangeまたはrepair、かつVoltageLevelがHVの送電線を絞り込みます。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
-- Define the table CTE
___ ___ (Line, Destination, Source, Description, ConditionAssessment, VoltageLevel) ___ (
SELECT
EquipmentID,
EquipmentID_To,
EquipmentID_From,
Description,
ConditionAssessment,
VoltageLevel
FROM GridStructure
-- Start the evaluation for line 3
___ EquipmentID = ___
UNION ALL
SELECT
Child.EquipmentID,
Child.EquipmentID_To,
Child.EquipmentID_FROM,
Child.Description,
Child.ConditionAssessment,
Child.VoltageLevel
FROM GridStructure Child
-- Join GridStructure with CTE on the corresponding endpoints
___ maintenance_List
ON maintenance_List.Line = Child.___)
SELECT Line, Description, ConditionAssessment
FROM maintenance_List
-- Filter the lines based on ConditionAssessment and VoltageLevel
WHERE
(ConditionAssessment ___ '%exchange%' ___ ConditionAssessment ___ '%repair%') ___
VoltageLevel LIKE '%HV%'