2014-08-31 68 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