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' [重复]的主要内容,如果未能解决你的问题,请参考以下文章