如何在mysql中减去两个结果值

时间:2016-05-28 10:47:06

标签: mysql difference

说我有一个表tableA,我的查询是

select id, 
       if(cond1, value, 0) firstval, 
       if(cond2, value, 0) secondval, 
       firstval-secondval diff 
from tableA

上述查询提供了Unknown column firstval in field list错误。我知道我可以将diff计算为if(cond1, value, 0)-if(cond2, value, 0) diff,但我不想再次添加条件而没有内部/子查询。

编辑:我的抽象概念如下

表格结构

id   |    type   |  recorddate  | value
=========================================
 1         A       2015-12-17       9
 2         B       2015-12-19       5
 3         A       2016-01-13       31
 4         B       2016-01-14       23
 5         A       2016-01-31       44
 6         B       2016-02-07       38

依旧......

查询:

 select 
    type, 
    if(max(recorddate), value, 0) firstval, 
    if(secondmax(recorddate), value, 0) secndval, 
    firstval-secndval diff 
 from table 
 where month(recorddate)=1
 group by type with rollup

基于以上查询的结果表:

type  | firstval  |  secndval  |  diff
======================================
 A      44           31          13
 B      23           5           18
Total   67           36          31           

2 个答案:

答案 0 :(得分:2)

添加子查询

select *, firstval-secondval diff 
   from 
     (select id, if(cond1, value, 0) firstval, if(cond2, value, 0) secondval
        from tableA
     ) t

答案 1 :(得分:0)

您想要减去两个结果值吗?我是对的吗?

因此,对于firstval,如果条件为true,则检查一个条件,然后获取该值,否则firstval值为0.对secondval执行相同的操作。这样你就不会得到未知的列错误。首先,你应该有列名firstval和secondval。

Select firstval-secondval as total from tableA;

它适用于简单的减法。