这个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
答案 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
子句。