【问题标题】:MySQL Case with group byMySQL 案例与分组依据
【发布时间】:2015-04-10 04:57:38
【问题描述】:

我有一张像这样的表(名称=费用):

id  amount  date
1   -1687   2014-01-02 00:00:00.0
2   11000   2014-01-02 00:00:00.0
3   1500    2014-01-03 00:00:00.0
4   -3800   2014-01-03 00:00:00.0
5   119500  2014-01-01 00:00:00.0
6   -2999   2014-01-04 00:00:00.0
7   5972    2014-01-04 00:00:00.0
..
8   7208    2014-12-31 00:00:00.0

我能够检索 收入 并按月分组,如下所示:

SELECT 
      SUM(amount), 
      date 
 FROM expense 
WHERE YEAR(now()) = YEAR(date) AND amount>0 
GROUP BY MONTH(date);

我可以检索 expense 并按月份对其进行分组,如下所示:

SELECT
      SUM(amount), 
      date 
 FROM expense 
WHERE YEAR(now()) = YEAR(date) AND amount<=0 
GROUP BY MONTH(date);

我想知道是否有办法将这两个查询结合起来,同时检索 incomeexpense 并在一个单个查询中按月分组。

【问题讨论】:

  • 为什么 MySQL 和 Oracle 都被标记?不要标记不涉及的产品!

标签: mysql group-by case


【解决方案1】:

是的,你需要一个案例陈述:

SELECT
   sum(case when amount> 0 then amount end) as income, 
   sum(case when amount<=0 then amount end) as expense, 
   date 
FROM expense 
WHERE YEAR(now()) = YEAR(date) 
GROUP BY MONTH(date);

【讨论】:

  • 呵呵.. 2 箱左右总和!我正在摆弄一个案例,但它不起作用,懒得在这里发布。但很高兴我做到了。谢谢@Florin Ghita
猜你喜欢
  • 2023-03-02
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-24
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多