2014-08-31 104 views
1

此IF语句有什么问题?这似乎遵循一个IF的标准,但将不会运行访问SQL IF语句失败

SELECT Account, SUM(IF dbo_ADT.type = "wager" 
AND - dbo_ADT.amount > 0 then - dbo_ADT.amount 
ElseIf dbo_ADT.type = "cancel" THEN 
    - dbo_ADT.amount elseIf dbo_ADT.type = "winnings" 
THEN - dbo_ADT.refund ELSE 0 END IF) AS Handle 
FROM dbo_ADT 
+1

JetSQL中没有'IF'语句,使用'IIF'功能 – 4dmonster 2014-08-31 18:19:56

+0

IFF不允许使用ElseIf,elseif的任何建议吗? – ColorfulWind 2014-08-31 18:31:59

回答

3

访问SQL不支持if...then...else语法(在SQL中,这是在VBA支持,当然),但你可以使用iif(condition, "value if true", "value if false")来完成相同的如果你嵌套iif陈述。我觉得您的查询应该写成:

SELECT 
    Account, 
    SUM(
     IIF(
      dbo_ADT.type = "wager" AND - dbo_ADT.amount > 0, 
      - dbo_ADT.amount, 
      IIF(
       dbo_ADT.type = "cancel", 
       - dbo_ADT.amount, 
       IIF(dbo_ADT.type = "winnings", dbo_ADT.refund, 0) 
       ) 
      ) 
     ) AS Handle 
FROM dbo_ADT 
GROUP BY Account 

我可能已经混了嵌套(虽然我相信这是正确的),所以你必须检查你得到预期的结果(尤其是else条件),但你应该明白我希望的想法。

我还添加了当您使用聚合函数时需要的group by子句。

+1

谢谢你,嵌套做的伎俩,你是一个生活的节省 – ColorfulWind 2014-08-31 19:31:37