Sql server 如何修改多个CASE语句

Sql server 如何修改多个CASE语句,sql-server,Sql Server,又是我。我只想询问您对如何修改SELECT statament查询的意见。因此,基本上我创建了一个名为“Force Schedule2”的用户定义字段,如果该复选框为勾选(等于1),那么即使该项在附表1中,它也将显示在附表2中。我应该如何将其添加到现有的案例陈述中 我当前的SELECT语句是: SELECT CASE WHEN WorkOrder.DateCreated < ( CASE

又是我。我只想询问您对如何修改SELECT statament查询的意见。因此,基本上我创建了一个名为“Force Schedule2”的用户定义字段,如果该复选框为勾选(等于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

不清楚您在约会操作中想要做什么。你可以做一些简单的事情,比如:

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
案例
当dbo.AdditionalInfo.UserDefined3=1时
然后2
创建WorkOrder.date时<(日期部分(dw,dbo.ToBeScheduled_InProgress.Start)=2)然后(ToBeScheduled_InProgress.Start+0.625)-3其他情况(ToBeScheduled_InProgress.Start+0.625)-1结束)
那么1
其他2
按预定时间结束

基本上,它命中条件并退出语句。如果您将其翻转,使日期操作是第一个,它将返回1,因此您仍然需要考虑将内容输入case语句的顺序。

该代码是否在
WHERE
块中?为什么不让您的标准条件+
或用户定义3=1
?或者这只是一个
SELECT
问题?我不清楚你到底在做什么。也许如果您显示更多的查询或正在使用的表。。。为什么要加15小时,然后减去3天或1天?该复选框是否会更改应显示的行?或者这仅仅会改变列中显示的内容?还不清楚…太好了!这是有效的:)对不起,我应该声明它在我的选择范围内。我对日期位的评论更多,因此不清楚你为什么要做这个手术,或者它会产生什么影响。有很多方法可以解决这个问题,包括更多信息可能会让你得到一个更好的答案。当dbo.AdditionalInfo.userdefined 3 1和WorkOrder.DateCreated<。。。然后1其他2结束:)
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