2012-04-01 8 views
4

Ich habe ein Problem mit einer SQL-Abfrage.wiederverwenden "sum (table_column) als x"

SELECT SUM(table_colum) AS value, SUM(value * 3) AS value2 FROM table; 

Sie müssen wissen, dies ist eine kurze Darstellung meiner gesamten Abfrage.

Der Fehler:

Unknown column 'value' in 'field list' 

Gibt es eine Möglichkeit value in einem anderen SUM() wieder zu verwenden?

+1

Ich kann mir nicht die Ergebnisse vorstellen, die Sie wollen. 'SUM (table_column)' ist bereits ein einzelner Wert, da Sie weder eine explizite GROUP BY noch eine implizite haben; Also, was bedeutet es, die "SUMME" * davon * zu berechnen? – ruakh

+0

@ruakh gibt es eine komplexe Berechnung, aber das hat nichts mit dem Problem zu tun –

Antwort

6

Sie können einfach tun:

SELECT SUM(table_colum) AS value, SUM(SUM(table_colum) * 3) AS value2 FROM table; 

Intern wird der Server nur einmal die SUM(table_colum) Berechnung tun und das Ergebnis zweimal verwenden.

+1

Ein Link zu den offiziellen Dokumenten würde geschätzt werden :) – Epoc

4

Ich nehme an, Sie

SELECT value, SUM(value * 3) AS value2 
    FROM (SELECT SUM(table_column) AS value 
      FROM table 
     ) AS t 
; 

schreiben konnte Aber wie ich oben in einem Kommentar erwähnt, ich bin nicht sicher, was Sie würde dies wollen. SUM(table_column) ist nur ein einzelner Wert, also SUM davon ist nur der gleiche Wert. So würde man das gleiche Ergebnis durch Schreiben erhalten:

SELECT value, value * 3 AS value2 
    FROM (SELECT SUM(table_column) AS value 
      FROM table 
     ) AS t 
; 

ohne die zweite SUM.