Скажем, у меня есть таблица tableA
и мой запроскак вычесть два результирующие значения в MySQL
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
, но я не хочу добавлять условие снова и без внутренних/вспомогательных запросов.
EDIT: Моя абстрактная идея следующим образом
Структура таблицы
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
Что случилось с использованием подзапросов? Почему ты этого не хочешь? В противном случае я не думаю, что вы можете это сделать. – mhawke
если есть подзапрос, мы не можем использовать 'group by with rollup' ... Разве это не так? – mpsbhat
Возможно, вы покажете нам полную проблему? – splash58