2010-10-12 80 views
0

这个SQL查询工作正常,直到我尝试添加CASE语句,但现在我得到了这篇文章底部描述的语法错误。这里的SQL(非常史诗,但是语法错误发生周围的情况下,也许与SageAccount前选择)我的SQL查询出了什么问题?语法错误

SELECT CurrentBalance.Value AS CurrentBalanceValue, 
     Debt30Balance.Value AS Debt30BalanceValue, 
     Debt60Balance.Value AS Debt60BalanceValue, 
     Debt90Balance.Value AS Debt90BalanceValue, 
     WIP.Value AS WIPValue, CurrentBalance.Value + Debt30Balance.Value + 
      Debt60Balance.Value + Debt90Balance.Value AS SLDebt, 
     CurrentBalance.Value + Debt30Balance.Value + Debt60Balance.Value + 
      Debt90Balance.Value+ WIP.Value AS TotalDebt, 
     (SELECT CreditTerms FROM SageAccount WHERE [email protected]) 
     AS CreditTerms, 
CASE WHEN CreditTerms <= 30 THEN 
CurrentBalance.Value + Debt30Balance.Value + 
    Debt60Balance.Value + Dept90Balance.Value 
ELSE WHEN CreditTerms <= 60 THEN 
Debt30Balance.Value + Debt60Balance.Value + Dept90Balance.Value 
ELSE WHEN CreditTerms <= 90 THEN 
Debt60Balance.Value + Dept90Balance.Value 
ELSE 
Debt90Balance.Value 
END AS Overdue 
FROM (SELECT TOP (1) Value, Customer FROM DebtBreakdown 
     WHERE (Type = 0) AND (Customer = @CustomerID) 
     ORDER BY Timestamp DESC) AS CurrentBalance 
     INNER JOIN (SELECT TOP (1) Value, Customer 
     FROM DebtBreakdown AS DebtBreakdown_1 
     WHERE (Type = 1) AND (Customer = @CustomerID) 
     ORDER BY Timestamp DESC) AS Debt30Balance ON 
     CurrentBalance.Customer = Debt30Balance.Customer 
     INNER JOIN (SELECT TOP (1) Value, Customer FROM 
     DebtBreakdown AS DebtBreakdown_2 
     WHERE (Type = 2) AND (Customer = @CustomerID) 
     ORDER BY Timestamp DESC) 
     AS Debt60Balance ON Debt30Balance.Customer = Debt60Balance.Customer 
     INNER JOIN (SELECT TOP (1) Value, Customer FROM DebtBreakdown AS 
     DebtBreakdown_3 WHERE (Type = 3) AND (Customer = @CustomerID) 
     ORDER BY Timestamp DESC) AS Debt90Balance ON 
     Debt60Balance.Customer = Debt90Balance.Customer 
     INNER JOIN (SELECT TOP (1) Value, Customer FROM DebtBreakdown AS 
     DebtBreakdown_4 WHERE (Type = 4) AND (Customer = @CustomerID) 
     ORDER BY Timestamp DESC) AS WIP ON Debt90Balance.Customer = WIP.Customer 

对不起,忘了错误!

'WHEN'附近的WHERE子句出现错误。 ','附近的WHERE子句出错。 'ORDER'附近的WHERE子句出错。无法解析查询文本。

+1

您遇到的错误是什么?在我的帖子底部,我没有看到有关错误的信息。 – LittleBobbyTables 2010-10-12 16:15:59

回答

10

尝试将“ELSE WHEN”语句更改为“WHEN”(将最终ELSE保持原样)

+3

+1 - 这就是我想要设置他的问题的格式 - 击败了我。 – LittleBobbyTables 2010-10-12 16:19:07