subtrahieren sagen, dass ich eine Tabelle tableA
und meine Frage istwie zwei resultierenden Werte in mysql
select id,
if(cond1, value, 0) firstval,
if(cond2, value, 0) secondval,
firstval-secondval diff
from tableA
Die obige Abfrage gibt Unknown column firstval in field list
Fehler. Ich weiß, dass ich Diff als if(cond1, value, 0)-if(cond2, value, 0) diff
berechnen kann, aber ich möchte Bedingung nicht wieder hinzufügen und ohne innere/sub-Abfragen.
EDIT: Meine abstrakte Idee folgt als
Tabellenstruktur
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
und so weiter ...
Abfrage:
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
Resultierende Tabelle oben basiert Abfrage:
type | firstval | secndval | diff
======================================
A 44 31 13
B 23 5 18
Total 67 36 31
Was ist falsch bei der Verwendung von Unterabfragen? Warum willst du das nicht? Ansonsten glaube ich nicht, dass du es schaffen kannst. – mhawke
Wenn es eine Unterabfrage gibt, können wir 'group by with rollup' nicht verwenden ... oder? – mpsbhat
Vielleicht zeigen Sie uns das volle Problem? – splash58