如何在现有SELECT语句的CASE逻辑中添加Force Schedule2强制字段?
调整SELECT查询以支持强制调度逻辑
没问题!我来帮你把这个强制调度的逻辑整合到现有的查询里。核心思路是把自定义字段的判断放在最高优先级——只要ForceSched(也就是dbo.AdditionalInfo.UserDefined3)的值为1,直接返回Schedule2(对应值2);只有当这个复选框没勾选时,才走原来的时间判断逻辑。
修改后的完整查询语句
SELECT CASE WHEN dbo.AdditionalInfo.UserDefined3 = 1 THEN 2 -- 复选框勾选时,强制显示为Schedule2 WHEN WorkOrder.DateCreated < ( CASE WHEN (DATEPART(dw, dbo.ToBeScheduled_InProgress.Start) = 2) THEN (ToBeScheduled_InProgress.Start + 0.625) - 3 ELSE (ToBeScheduled_InProgress.Start + 0.625) - 1 END ) THEN 1 ELSE 2 END AS ScheduleTime, dbo.AdditionalInfo.UserDefined3 AS ForceSched -- 可选:保留此字段方便验证逻辑是否生效 FROM -- 请确保已正确关联所有涉及的表,示例关联逻辑需根据你的实际表结构调整 WorkOrder JOIN dbo.ToBeScheduled_InProgress ON WorkOrder.[关联字段] = dbo.ToBeScheduled_InProgress.[关联字段] JOIN dbo.AdditionalInfo ON WorkOrder.[关联字段] = dbo.AdditionalInfo.[关联字段]
逻辑说明
- 最外层
CASE先判断自定义字段:只要UserDefined3等于1,直接返回2,优先满足“强制显示为Schedule2”的需求 - 当自定义字段不为1时,才执行你原本的时间判断逻辑,根据工单创建时间和调度起始时间的关系返回1或2
- 如果需要验证逻辑是否正常工作,可以保留
ForceSched字段,方便查看每条数据的强制调度开关状态
内容的提问来源于stack exchange,提问作者user9399808
相关产品推荐
相关产品推荐

