说我有一个表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
答案 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;
它适用于简单的减法。