【问题标题】:Sum Case SQL Syntax errorSum Case SQL 语法错误
【发布时间】:2015-10-14 14:37:58
【问题描述】:

我有以下 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

我收到以下错误:

查询表达式 'SUM(CASE WHEN) 中的语法错误(缺少运算符) PaymentStatus='APPROVED' THEN 1 ELSE 0 END)'

【问题讨论】:

  • 支付状态要么被批准要么被拒绝。

标签: sql ms-access vba


【解决方案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;

但是,我不确定您为什么在 GROUP BY 中有 PaymentStatus。也许你打算:

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多