如何检查mysql sum中的两个条件 选择客户代码、客户名称 ,SUM(当VoucherType='S'然后Amount ELSE 0 END时的情况)作为销售总额 ,求和(当VoucherType='I'时,则为金额0结束)作为利息 ,SUM(当VoucherType=''时,则为0结尾)作为利息 ,SUM(当VoucherType='P'然后Amount ELSE 0 END时的情况)作为chequereturn\u SUM ,SUM(当VoucherType='R'时,则金额为0结束)作为收据金额 ,SUM(当VoucherType='R'时,则金额为0结束)作为收据金额 ,SUM(当VoucherType='N'时,则金额为0结束)作为贷记金额 ,总和(DrCrType='DR'和VoucherDate='2012-04-01'和 当PAT_DrCrType='DR'和VoucherDate当PAT_DrCrType='DR'和VoucherDate

如何检查mysql sum中的两个条件 选择客户代码、客户名称 ,SUM(当VoucherType='S'然后Amount ELSE 0 END时的情况)作为销售总额 ,求和(当VoucherType='I'时,则为金额0结束)作为利息 ,SUM(当VoucherType=''时,则为0结尾)作为利息 ,SUM(当VoucherType='P'然后Amount ELSE 0 END时的情况)作为chequereturn\u SUM ,SUM(当VoucherType='R'时,则金额为0结束)作为收据金额 ,SUM(当VoucherType='R'时,则金额为0结束)作为收据金额 ,SUM(当VoucherType='N'时,则金额为0结束)作为贷记金额 ,总和(DrCrType='DR'和VoucherDate='2012-04-01'和 当PAT_DrCrType='DR'和VoucherDate当PAT_DrCrType='DR'和VoucherDate,mysql,sql,Mysql,Sql,时,您的操作方式是正确的 您只是犯了一个小错误。您只需在该错误之后添加END,条件如下: WHEN PAT_DrCrType = 'DR' and VoucherDate <= '2012-04-01' THEN Amount ELSE (Amount-1)) AS opening_sum SUM(CASE WHEN DrCrType = 'DR' and VoucherDate <= '2012-04-01' THEN Amount

时,您的操作方式是正确的

您只是犯了一个小错误。您只需在该错误之后添加
END
,条件如下:

 WHEN PAT_DrCrType = 'DR' and VoucherDate <= '2012-04-01' THEN Amount ELSE (Amount-1)) AS opening_sum
SUM(CASE WHEN DrCrType = 'DR' 
          and VoucherDate <= '2012-04-01' 
         THEN Amount 
         ELSE (Amount*-1) END) AS opening_sum
                          ^^^
SUM(DrCrType='DR'时的情况)

而VoucherDate您的做法是正确的

您只是犯了一个小错误。您只需在该错误之后添加
END
,条件如下:

 WHEN PAT_DrCrType = 'DR' and VoucherDate <= '2012-04-01' THEN Amount ELSE (Amount-1)) AS opening_sum
SUM(CASE WHEN DrCrType = 'DR' 
          and VoucherDate <= '2012-04-01' 
         THEN Amount 
         ELSE (Amount*-1) END) AS opening_sum
                          ^^^
SUM(DrCrType='DR'时的情况)
而VoucherDate试试这种方法

select cust_code,occu_name
, SUM(CASE WHEN VoucherType = 'S' THEN Amount ELSE 0 END) AS salesSum
,SUM(CASE WHEN VoucherType = 'I' THEN Amount ELSE 0 END) AS interestSum
,SUM(CASE WHEN VoucherType = '' THEN Amount ELSE 0 END) AS interest_sum
,SUM(CASE WHEN VoucherType = 'P' THEN Amount ELSE 0 END) AS chequereturn_sum
,SUM(CASE WHEN VoucherType = 'R' THEN Amount ELSE 0 END) AS receipt_sum
,SUM(CASE WHEN VoucherType = 'R' THEN Amount ELSE 0 END) AS receipt_sum
,SUM(CASE WHEN VoucherType = 'N' THEN Amount ELSE 0 END) AS credit_sum
SUM(CASE WHEN DrCrType = 'DR' 
          and VoucherDate <= '2012-04-01' 
         THEN Amount 
         ELSE (Amount*-1) END) AS opening_sum
from bmwregistration, ledger_transactions
where bmwregistration.ledger_id = ledger_transactions.OccupierID and
  VoucherDate >= '2012-04-01' and
  VoucherDate <= '2013-02-01'
group by cust_code
SUM(当DrCrType='DR'和VoucherDate时的情况)请尝试这种方法

select cust_code,occu_name
, SUM(CASE WHEN VoucherType = 'S' THEN Amount ELSE 0 END) AS salesSum
,SUM(CASE WHEN VoucherType = 'I' THEN Amount ELSE 0 END) AS interestSum
,SUM(CASE WHEN VoucherType = '' THEN Amount ELSE 0 END) AS interest_sum
,SUM(CASE WHEN VoucherType = 'P' THEN Amount ELSE 0 END) AS chequereturn_sum
,SUM(CASE WHEN VoucherType = 'R' THEN Amount ELSE 0 END) AS receipt_sum
,SUM(CASE WHEN VoucherType = 'R' THEN Amount ELSE 0 END) AS receipt_sum
,SUM(CASE WHEN VoucherType = 'N' THEN Amount ELSE 0 END) AS credit_sum
SUM(CASE WHEN DrCrType = 'DR' 
          and VoucherDate <= '2012-04-01' 
         THEN Amount 
         ELSE (Amount*-1) END) AS opening_sum
from bmwregistration, ledger_transactions
where bmwregistration.ledger_id = ledger_transactions.OccupierID and
  VoucherDate >= '2012-04-01' and
  VoucherDate <= '2013-02-01'
group by cust_code

SUM(当DrCrType='DR'和VoucherDate时,您是否有任何错误?是的,syntaxI需要将该子句中的金额减去-1到amount。查询观察日期VoucherDate='2012-04-01'时出现问题。在where子句中,您是否有任何错误?是的,syntaxI不需要将该子句中的金额减去-1到amountAMOUNT where子句中的查询观察日期VoucherDate='2012-04-01'有问题