2015-10-14 18 views
0

У меня есть следующий SQL-запрос:Sum Case SQL Синтаксис ошибки

SELECT 
    CompanyCode, PaymentStatus, PaymentType, PaySource, 
    SUM(CCur(PaymentAmount)), 
    SUM(CASE WHEN PaymentStatus='APPROVED' THEN 1 ELSE 0 END) AS Approved, 
    COUNT(*) 
FROM 
    Detail_Work 
GROUP BY 
    CompanyCode, PaymentType, PaymentStatus, PaySource 
ORDER BY 
    CompanyCode, PaymentType, PaymentStatus, PaySource 

И я получаю следующее сообщение об ошибке:

Syntax Error (Missing Operator) in query Expression 'SUM(CASE WHEN PaymentStatus='APPROVED' THEN 1 ELSE 0 END)'

+0

PaymentStatus утвержден или отклонен. – GhostDZ9

ответ

1

MS Access не поддерживает case. Используйте iif() вместо:

SELECT CompanyCode, PaymentStatus, PaymentType, PaySource,  
     SUM(CCur(PaymentAmount)), 
     SUM(IIF(PaymentStatus = 'APPROVED', 1, 0)) AS Approved, COUNT(*) 
FROM Detail_Work 
GROUP BY CompanyCode,PaymentType, PaymentStatus, PaySource 
ORDER BY CompanyCode, PaymentType, PaymentStatus, PaySource; 

Однако, я не знаю, почему у вас есть PaymentStatus в GROUP BY. Возможно, вы намерены:

SELECT CompanyCode, PaymentType, PaySource,  
     SUM(CCur(PaymentAmount)), 
     SUM(IIF(PaymentStatus = 'APPROVED', 1, 0)) AS Approved, COUNT(*) 
FROM Detail_Work 
GROUP BY CompanyCode,PaymentType, PaySource 
ORDER BY CompanyCode, PaymentType, PaySource; 
+0

Это работало благодаря кучке! – GhostDZ9

Смежные вопросы