修复SQL Server中的“关键字'WHEN'附近语法错误”错误?

5 浏览
0 Comments

修复SQL Server中的“关键字'WHEN'附近语法错误”错误?

我尝试在CASE表达式中实现这两个when条件,但是它就是不起作用。请帮我修复一下?

SELECT 
    BR, CID, TRNDATE, 
    CASE
        WHEN TRNTYPE = '108' THEN -1 ELSE 1 * TrnAmt/100
        WHEN TRNTYPE = '114' THEN (TrnIntAmt - TrnTaxAmt)/100
    END as 交易金额
FROM 
    T_TRNHIST

0
0 Comments

问题的出现原因是在SQL Server中使用CASE语句时,ELSE条件必须放在所有WHEN条件之后。

要解决这个问题,需要将ELSE条件放在所有WHEN条件之后,确保语法正确。以下是修复后的查询示例:

SELECT BR, CID, TRNDATE, 
CASE
    WHEN TRNTYPE = '108' THEN -1 
    WHEN TRNTYPE = '114' THEN (TrnIntAmt - TrnTaxAmt)/100
    ELSE 1 * TrnAmt/100
    END as TransactionAmount
FROM T_TRNHIST

0
0 Comments

原因:该错误的原因是因为ELSE关键字放置在END关键字之后,导致语法错误。

解决方法:将ELSE关键字移动到END关键字之前即可解决该问题。

整理成一篇文章:

在SQL Server中,有时候我们会遇到类似于"Fix 'Incorrect syntax near the keyword 'WHEN'' error in SQL Server"的错误。这种错误通常是由于语法错误引起的。

例如,我们有以下的SQL查询语句:

SELECT BR, CID, TRNDATE, 
CASE
    WHEN TRNTYPE = '108' THEN -1 
    WHEN TRNTYPE = '114' THEN (TrnIntAmt - TrnTaxAmt)/100
    else 1 * TrnAmt/100
END as TransactionAmount
FROM T_TRNHIST

在这个查询语句中,我们使用了CASE语句来根据TRNTYPE的不同值计算TransactionAmount。然而,当我们尝试执行这个查询时,却遇到了"Fix 'Incorrect syntax near the keyword 'WHEN'' error in SQL Server"错误。

要解决这个错误,我们只需要将ELSE关键字移动到END关键字之前即可。修改后的查询语句如下所示:

SELECT BR, CID, TRNDATE, 
CASE
    WHEN TRNTYPE = '108' THEN -1 
    WHEN TRNTYPE = '114' THEN (TrnIntAmt - TrnTaxAmt)/100
    ELSE 1 * TrnAmt/100
END as TransactionAmount
FROM T_TRNHIST

通过以上修改,我们成功修复了"Fix 'Incorrect syntax near the keyword 'WHEN'' error in SQL Server"错误,并且可以正常执行查询语句了。

在SQL Server中,当遇到类似于"Fix 'Incorrect syntax near the keyword 'WHEN'' error in SQL Server"的错误时,通常是由于语法错误引起的。解决这种错误的方法是将关键字放置在正确的位置,例如将ELSE关键字移动到END关键字之前。

0