首页 新闻 会员 周边 捐助

mysql 多条记录判断相加减合并一条

0
悬赏园豆:20 [已解决问题] 解决于 2012-10-22 16:19

  code        pay    payflag
  00001   100.00   0
  00001   50.00     1
  00001   50.00     0
  00002   200.00    0
  
  pay 是 decimal,payflag 0 是付款, 1 是退款
  把code相同并payflag=0的pay相加减去payflag=1的pay得到下面这下的数据
 
  code        pay  
  00001   100.00  
  00002    200.00  

  急着要。。在线等。。。

阿嵐的主页 阿嵐 | 初学一级 | 园豆:177
提问于:2012-10-19 15:03
< >
分享
最佳答案
0

select code,sum(pay*(case payflag when 1 then -1 else 1 end)) as pay
from [table]
group by code

收获园豆:10
nickycookie | 初学一级 |园豆:106 | 2012-10-19 16:52

谢谢,不过我找到了更好的办法

select code,sum(if(payflag=0,pay,-1*pay))
from tt

group by code

阿嵐 | 园豆:177 (初学一级) | 2012-10-22 16:08

@阿岚: if***估计是mysql自己的语法把

nickycookie | 园豆:106 (初学一级) | 2012-10-23 10:55
其他回答(2)
0
select code, sum(pay*(cos(PI()*payflag))) as pay
from [tablename]
group by code
收获园豆:5
Ethan轻叹 | 园豆:996 (小虾三级) | 2012-10-19 15:39

谢谢,不过我找到了跟好的办法

select code,sum(if(payflag=0,pay,-1*pay))
from tt

group by code

支持(0) 反对(0) 阿嵐 | 园豆:177 (初学一级) | 2012-10-22 16:07
0

select code ,

   sum(pay) pay

from (

  select code ,

       concat( (case payflag=1 then  '-' else '0') , pay) pay

  from *

  )

group by code

没用过mysql 根据Oracle语句 查了点资料 改的 试试行不

收获园豆:5
May_y | 园豆:209 (菜鸟二级) | 2012-10-19 15:41

谢谢,不过我找到了更好的办法

select code,sum(if(payflag=0,pay,-1*pay))
from tt

group by code

支持(0) 反对(0) 阿嵐 | 园豆:177 (初学一级) | 2012-10-22 16:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册