SQL注入if语句不接受else



运行以下语句时,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

假设您显示的是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)

最新更新