获取需要维护的输电线路
在提供的 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%'