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"