【问题标题】:MySQL SUM of two rows with condition具有条件的两行的 MySQL SUM
【发布时间】:2016-06-30 08:13:07
【问题描述】:

我是 MySQL 的初学者,我需要你的帮助。 我有这样的事情:

ID  Project  Type  Amount
1   1        I     5000
2   1        D     1000
3   2        I     3500
4   3        I     4300
5   3        D     1200

我想要这样的东西(同一个项目的 I 类型和 D 类型的数量之间的差异;D 类型并不总是存在):

Project  Amount
1        4000
2        3500
3        3100

【问题讨论】:

  • 项目是否只有 2 个值,表示低和高?

标签: mysql sql-server sum


【解决方案1】:

我建议使用caseAmount+- 一起使用:

  select Project as Project,
         sum(case  
               when Type = 'I' then
                 Amount
               when Type = 'D' then 
                -Amount 
             end case) as Amount
    from MyTable
group by Project
--    order by Project -- uncomment this if you want sorted cursor

【讨论】:

  • 他问2个值的不同值,
【解决方案2】:

试试这个;)

select
    Project,
    sum(if(Type = 'I', Amount, -Amount)) as Amount
from table1
group by Project

SQLFiddle DEMO HERE

【讨论】:

  • 可能sum (if(Type = 'I', Amount, -Amount))是这个想法的更好实现
  • @DmitryBychenko 嗯,你是对的。更新了它。谢谢。
  • 请记住,if 较短RDBMS 特定的(这就是我更喜欢 case 的原因)
  • @DmitryBychenko 我记得,再次感谢这个无价的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 2021-10-24
  • 2022-01-07
  • 2019-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多