mssql 这是语法'if' [重复]

Posted

技术标签:

【中文标题】mssql 这是语法\'if\' [重复]【英文标题】:mssql which is the syntax 'if' [duplicate]mssql 这是语法'if' [重复] 【发布时间】:2018-03-10 14:45:35 【问题描述】:

我在 mssql 中有这段代码:

SELECT
    t1.Id,
    t2.Id,
    t1.QuantityIn,
    t1.PriceIn,
    t2.QuantityOut,

    (If (t2.QuantityOut - t1.QuantityIn)=0

        THEN t2.QuantityOut

    Else t2.QuantityOut - t1.QuantityIn ) AS Quant,

    t2.PriceOut

FROM t1

LEFT JOIN t2 ON t2.Id = t1.Id

在软件中 MsSql Server Management Studio 错误是

关键字“If”附近的语法不正确。

在我的情况下,'if' 的正确语法是什么?

谢谢!

【问题讨论】:

@lad2025 的答案对于 SQL Server 2012+ 是正确的,但使用 CASE 语句更便于移植。 ***.com/a/22839537/2084315 【参考方案1】:

您需要使用IIF(SQL Server 2012 及以上版本):

IIF (boolean_expression, true_value, false_value)

SELECT
    t1.Id,
    t2.Id,
    t1.QuantityIn,
    t1.PriceIn,
    t2.QuantityOut,
    IIF (t2.QuantityOut - t1.QuantityIn=0,t2.QuantityOut
        , t2.QuantityOut - t1.QuantityIn ) AS Quant,
    t2.PriceOut
FROM t1
LEFT JOIN t2 ON t2.Id = t1.Id

【讨论】:

如果你有 SQL Server 2012+【参考方案2】:

试试这个

SELECT
    t1.Id,
    t2.Id,
    t1.QuantityIn,
    t1.PriceIn,
    t2.QuantityOut,

    CASE WHEN t2.QuantityOut - t1.QuantityIn =0

        THEN t2.QuantityOut

    Else t2.QuantityOut - t1.QuantityIn END AS Quant,

    t2.PriceOut

FROM t1

LEFT JOIN t2 ON t2.Id = t1.Id

【讨论】:

以上是关于mssql 这是语法'if' [重复]的主要内容,如果未能解决你的问题,请参考以下文章

关键字 'if' 附近有语法错误。

返回语法有点奇怪[重复]

MySQL 中基于 MSSQL 语法按 YEAR 选择日期范围的等效语法是啥?

if 条件中的语法错误。不等号突出显示[重复]

if语句和变量声明的MSVC语法错误[重复]

php if then else语句语法错误某处[重复]