Sql条件语句

我有一个Excel工作表,下面有这个公式。 我想用sql来计算相同的公式。 在Excel公式中有一个嵌套的if条件。 是否有可能与SQL? 我试过“ Case .. When .. Then .. Else .. ”但是我不能pipe理! 在我的Excel表格中,这个计算结果是“OK”

谢谢,

 Declare @ProjectName nvarchar(max) Declare @NewTotalElapsedTimeEnd nvarchar(max) Declare @TotalElapsedTime nvarchar(max) Declare @SlaTime nvarchar(max) Declare @Result nvarchar(max) set @ProjectName = '' set @NewTotalElapsedTimeEnd = 0 set @TotalElapsedTime = 69563 set @SlaTime = 86400 

Excel公式

 =IF(ProjectName<>"","PROJECTED",IF(NewTotalElapsedTimeEnd=0,IF(TotalElapsedTime-SlaTime<0,"OK","NOK"),IF(NewTotalElapsedTimeEnd-SlaTime<0;"OK";"NOK"))) 

这应该可以帮助你(在MS SQL Server上完成,也许你的数据库系统需要对语法进行小的修改)。 案例 – 什么时候工作正常,但是您需要将您的时间跨度值作为能够如此减less的数字。

干杯。

 Declare @ProjectName nvarchar(max) Declare @NewTotalElapsedTimeEnd int Declare @TotalElapsedTime int Declare @SlaTime int Declare @Result nvarchar(max) set @ProjectName = '' set @NewTotalElapsedTimeEnd = 0 set @TotalElapsedTime = 69563 set @SlaTime = 86400 SET @Result = CASE WHEN @ProjectName <> '' THEN 'PROJECTED' ELSE CASE WHEN @NewTotalElapsedTimeEnd = 0 THEN CASE WHEN @TotalElapsedTime < 0 THEN 'OK' ELSE 'NOK' END ELSE CASE WHEN (@NewTotalElapsedTimeEnd - @SlaTime) < 0 THEN 'OK' ELSE 'NOK' END END END SELECT @Result 

是的,你可以嵌套CASE语句,如下所示:

 CASE WHEN ProjectName <> '' THEN 'PROJECTED' ELSE CASE WHEN NewTotalElapsedTimeEnd = 0 THEN CASE WHEN TotalElapsedTime - SlaTime < 0 THEN 'OK' ELSE 'NOK' END ELSE CASE WHEN NewTotalElapsedTimeEnd - SlaTime < 0 THEN 'OK' ELSE 'NOK' END END END 

首先,缩进你的IF:

 =IF(ProjectName<>"", "PROJECTED", IF(NewTotalElapsedTimeEnd=0, IF(TotalElapsedTime-SlaTime<0, "OK", "NOK"), IF(NewTotalElapsedTimeEnd-SlaTime<0;"OK";"NOK"))) 

第二,把它翻译成CASE:

  case when ProjectName = "" then "PROJECTED" else case when NewTotalElapsedTimeEnd=0 then case when TotalElapsedTime-SlaTime<0 then "OK" else "NOK" end else case when NewTotalElapsedTimeEnd-SlaTime<0 then "OK" else "NOK" end end end 

这是你的嵌套if。

 IF (ProjectName<>"", "PROJECTED", IF(NewTotalElapsedTimeEnd=0, IF(TotalElapsedTime-SlaTime<0, "OK", "NOK" ), IF(NewTotalElapsedTimeEnd-SlaTime<0; "OK"; "NOK" ) ) ) 

你可以用T-SQL IF做到这一点:

 IF @ProjectName<>"" set @Result ="PROJECTED" ELSE IF @NewTotalElapsedTimeEnd=0 IF @TotalElapsedTime-@SlaTime<0 set @Result = "OK" ELSE set @Result = "NOK" ELSE IF @NewTotalElapsedTimeEnd-@SlaTime<0 set @Result = "OK" ELSE set @Result = "NOK"