簡體   English   中英

SQL Else If語句從另一列的數值返回文本值-不起作用

[英]SQL Else If statement to return text value from numeric value of another column - not working

我需要具有一個計算所得的列Site_Condition ,該列將基於同一表中另一列Condition_Score的數值返回一個文本值。

以下是我嘗試插入“計算列規范”中的內容,但收到此消息:

驗證公式時出錯

我還嘗試過使用下面的相同語法從腳本“創建表為”創建它,即:Site_Condition AS(IF ....)

我究竟做錯了什么?

IF([Condition_Score]<0.51,'Very poor',(ELSE  
IF([Condition_Score]<1.51,'Poor', ELSE 
IF([Condition_Score]<2.51,'Moderate',ELSE 
IF([Condition_Score]<3.51,'Good',ELSE 
IF([Condition_Score]>3.51,'Excellent'))))))

在SQL中,我們使用CASE而不是IF

CASE WHEN [Condition_Score]<0.51 THEN 'Very poor'
     WHEN [Condition_Score]<1.51 THEN 'Poor'
     WHEN [Condition_Score]<2.51 THEN 'Moderate'
     WHEN [Condition_Score]<3.51 THEN 'Good' 
     ELSE 'Excellent' END

但是為了完整IIF() ,這是IIF()版本(請注意額外的“ I ”,“ Immediate If”的縮寫):

IIF([Condition_Score]<0.51, 'Very poor',
    IIF([Condition_Score]<1.51, 'Poor',
    IIF([Condition_Score]<2.51, 'Moderate',
    IIF([Condition_Score]<3.51,'Good',
        'Excellent'))))

如果我沒記錯的話,直到Sql Server 2016 IIF()才可用。

這些還修復了一個錯誤,即如果分數恰好是 3.51,則結果將為NULL

這是執行查詢的簡單方法。

DECLARE @Condition_Score AS DECIMAL
SET @Condition_Score=1.25

DECLARE @Message AS VARCHAR(50)


IF(@Condition_Score<0.51)
BEGIN
    SET @Message ='Very poor'
END

else IF(@Condition_Score<1.51)
BEGIN
    SET @Message ='poor'
END

ELSE IF(@Condition_Score<2.51)
BEGIN
    SET @Message ='Moderate'
END

ELSE IF (@Condition_Score<3.51)
BEGIN
    SET @Message ='Good'
END

ELSE IF(@Condition_Score>3.51)
BEGIN
    SET @Message='Excellent'
END

PRINT @Message

注意:-這里“ PRINT @Message”用於檢查當前輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM