首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql select查询,有条件地将列数据拆分为2个新列

Mysql select查询,有条件地将列数据拆分为2个新列
EN

Stack Overflow用户
提问于 2012-03-24 07:38:14
回答 4查看 1.6K关注 0票数 0

我有一个名为credit_log的表,其中的列是

代码语言:javascript
复制
user_id | amount

数量可以是正数,也可以是负数。正数表示购买的积分,负数表示花费的积分。因此,我想要一个查询,它返回

代码语言:javascript
复制
user_id | Bought | Spent 

从本质上讲,我希望将购买金额中的正值相加,将支出中的负值相加,并希望按user_id进行分组

目前,我有一个类似这样的查询

代码语言:javascript
复制
select user_id,sum(amount) from credit_log group by user_id;

但它总结了积极和消极的价值。我如何编写一个查询来将它们分开?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-24 07:44:29

查询中的一些条件语句应该可以很好地工作:

代码语言:javascript
复制
SELECT
    user_id,
    SUM(IF(amount > 0, amount, 0)) bought,
    SUM(IF(amount < 0, amount, 0)) spent
FROM credit_log
GROUP BY user_id;
票数 2
EN

Stack Overflow用户

发布于 2012-03-24 07:45:32

代码语言:javascript
复制
 select user_id, sum(if(amount>0,amount,0)) bought, sum(if(amount<0,amount,0)) spent
 from web_user_credits group by user_id;
票数 1
EN

Stack Overflow用户

发布于 2012-03-24 07:42:28

我不是100%在mysql中语法是一样的...但看起来是这样的:

代码语言:javascript
复制
select
  user_id
 ,case when amount > 0 then amount else 0 end as bought
 ,case when amount < 0 then amount else 0 end as spent
from
 credit_log

您可以继续简单地将sum()放在case语句(包括end,但不包括as)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9847810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档