如何修改多个CASE语句

时间:2018-05-28 04:06:53

标签: sql-server

这又是我。我想问一下你如何修改我的SELECT statament查询的意见。所以基本上我创建了一个名为“Force Schedule2”的用户定义字段,如果此复选框是tick(等于1),那么即使该项目在计划1中,它也会按计划2显示。如何在现有案例中添加它声明?

我当前的SELECT语句是:

SELECT
   CASE 
       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

和我的用户定义的“Force Schedule2”字段是:

dbo.AdditionalInfo.UserDefined3 AS ForceSched

enter image description here

1 个答案:

答案 0 :(得分:1)

您在日期操作中尝试做的事情并不明显。你可以做这样简单的事情:

CASE
    WHEN dbo.AdditionalInfo.UserDefined3 = 1
        THEN 2
    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

基本上它符合条件并退出声明。如果你将它翻转,那么你的日期操作是第一次,那么它将返回1,所以你仍然需要考虑你将事情输入案例陈述的顺序。