访问SQL IF语句失败

时间:2014-08-31 18:18:22

标签: sql ms-access if-statement

这个IF声明有什么问题?它似乎遵循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 个答案:

答案 0 :(得分:3)

Access SQL不支持if...then...else语法(在sql中,它当然在vba中受支持)但是如果嵌套{iif(condition, "value if true", "value if false")可以使用iif完成同样的事情{1}}语句。我认为你的查询应该写成:

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子句。