Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 插入时的用例条件_Sql_Sql Server_Sql Server 2000 - Fatal编程技术网

Sql 插入时的用例条件

Sql 插入时的用例条件,sql,sql-server,sql-server-2000,Sql,Sql Server,Sql Server 2000,下面是一些SQL,它在内部和SP(SQL Server 2000)中运行良好 我想在“dateadd(mm,1,S.Date)”这一部分周围加上一个条件,以便能够做到: Insert into #sysAccrual Select 'R', Cast(S.ServicePurchaseLineID as varchar), - S.Amount, case when dateDiff(d, S.Date , LCS.statusDateTo) > 31 TH

下面是一些SQL,它在内部和SP(SQL Server 2000)中运行良好

我想在“dateadd(mm,1,S.Date)”这一部分周围加上一个条件,以便能够做到:

Insert into #sysAccrual
Select 'R', Cast(S.ServicePurchaseLineID as varchar), - S.Amount, 
       case when 
       dateDiff(d, S.Date , LCS.statusDateTo) > 31 THEN 
     dateadd(mm, 1, S.Date), 
   ELSE 
         S.Date, 
   END 
       null, L.LicenceTypeID, null,
       L.LicenceID, L.LicenceNumber
from sysMYOB_SP S inner join Licence L ON S.LicenceID = L.LicenceID 
              inner join licCurrentStatus LCS ON L.LicenceID = LCS.LicenceID 
        and S.PaymentReasonID = 2 
        and S.Accrued = 0
        and S.Deducted = 1
        and datediff(yy, S.Date, @AccrualMonth) = 0
        and datediff(mm, S.Date, @AccrualMonth) = 0
@我的问题是,我能做第二个问题的这一部分吗

 case when 
 dateDiff(d, S.Date , LCS.statusDateTo) > 31 THEN 
    dateadd(mm, 1, S.Date), 
 ELSE 
    S.Date, 
 END 

我不确定案例是否可以像我所做的那样在插入中使用。

您的案例陈述的逗号不正确

而不是

case when 
   dateDiff(d, S.Date , LCS.statusDateTo) > 31 THEN 
 dateadd(mm, 1, S.Date), 
ELSE 
     S.Date, 
END 
你应该

case when 
 dateDiff(d, S.Date , LCS.statusDateTo) > 31 THEN 
 dateadd(mm, 1, S.Date)
ELSE 
 S.Date
END,

你的问题是什么?你忘了在
END
后面加一个逗号,如果这是你的实际代码,请在
中删除逗号,然后在`dateadd(mm,1,s.Date)`和
s.Date
之后删除逗号,谢谢。所以在移动广告之后,我应该能够在这样的插入中使用一个盒子?
case when 
 dateDiff(d, S.Date , LCS.statusDateTo) > 31 THEN 
 dateadd(mm, 1, S.Date)
ELSE 
 S.Date
END,