【问题标题】: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' 的正确语法是什么?

谢谢!

【问题讨论】:

标签: sql-server if-statement


【解决方案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

【讨论】:

    猜你喜欢
    • 2016-04-16
    • 2014-04-10
    • 2013-04-05
    • 2020-10-25
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 2013-07-15
    • 2018-10-15
    相关资源
    最近更新 更多