运行以下语句,SQL Server 2014中的if语句出现错误:
if MAX(A,OS) <> 0
MAX(A.OS) +
SUM(CASE WHEN TipoMovimento = 'E' THEN Quantidade ELSE 0 END) -
SUM(CASE WHEN TipoMovimento ='S' THEN Quantidade else 0 END)
AS ClosingStock
else
SUM(CASE WHEN TipoMovimento = 'E' THEN Quantidade ELSE 0 END)
as ClosingStock
答案 0 :(得分:1)
假设您显示的内容是SQL语句的一部分,我认为您想要的是case
表达式,而不是if
语句。前者是可以在查询中使用的条件逻辑,而后者是在代码块(例如存储过程等)中起作用的流控制结构:
CASE WHEN MAX(A.OS) <> 0
THEN MAX(A.OS)
+ SUM(CASE WHEN TipoMovimento = 'E' THEN Quantidade ELSE 0 END)
- SUM(CASE WHEN TipoMovimento ='S' THEN Quantidade else 0 END)
ELSE SUM(CASE WHEN TipoMovimento = 'E' THEN Quantidade ELSE 0 END)
END as ClosingStock
在SQL Server中,可以使用IIF()
表示相同的逻辑;我更喜欢CASE
,因为它是标准SQL。
请注意,列别名仅在表达式末尾声明一次。
另外,MAX(A,OS)
也应该是MAX(A.OS)
。