2014-02-24 26 views
1

我在mysql用下列的表中:SQL - 和一些行,减和其他行

CUSTOMER_CODE | TRANS_TYPE | TRANS_VALUE 

TRANS_TYPE可能是因为存在“DRINV”(销售)或“DRCDT”(一信用)。

我想每个客户的总销售额,所以我的查询到目前为止是:

SELECT CUSTOMER_CODE, SUM(TRANS_VALUE) as SALES FROM DR_TRANS GROUP BY CUSTOMER_CODE 

问题是这样的总额,而不是给人是销售额减去信用销售学分。我想要的结果是

SUM(TRANS_VALUE) where TRANS_TYPE = "DRINV" - SUM(TRANS_VALUE) where TRANS_TYPE = "DRCDT". 

是否有可能在SQL查询中这样做?

回答

6
select customer_code, 
     sum(case 
      when trans_type = 'DRINV' then 
       trans_value 
      else 
       -trans_value 
      end) as net_sales 
    from dr_trans 
group by customer_code 
1

是的,这是可能的。使用CASE caluse:

SELECT CUSTOMER_CODE, 
SUM(CASE WHEN TRANS_TYPE = 'DRINV' THEN TRANS_VALUE ELSE (- TRANS_VALUE) END) as SALES 
FROM DR_TRANS GROUP BY CUSTOMER_CODE