2014-02-24 24 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