如果语句失败,则访问SQL

如果语句失败,则访问SQL,sql,ms-access,if-statement,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

这个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

Access SQL不支持
if…then…else
语法(在SQL中,vba当然支持该语法),但如果嵌套
iif
语句,则可以使用
iif(条件,“value if true”,“value if false”)
完成同样的任务。我认为你的问题应该写为:

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

如果JetSQL中的
语句中没有
,请使用
IIF
函数如果不允许ElseIf,对ElseIf有何建议?