Seite 1 von 1
Duchschnitt von einem berechneteten Feld
Verfasst: So, 19.10.2008 12:27
von bello15
Hallo, ich kann in einer Abfrage mit 2 Felder rechnen und das Ergebnis ein einem neuen Feld anzeigen. Jetzt will ich von den Ergebnissen den Durchschnitt berechnen, komme aber auf den Fehler Unexpected token in statement - Dateninhalte konnten nicht geladen werden
so sieht meine Abfrage aus
(
SELECT "StartPreis","AktuellerPreis","QM",CASEWHEN("AktuellerPreis" IS NULL,"StartPreis" / "QM","AktuellerPreis" / "QM") as "BerechnPreisQM" FROM "TabETWAngebote" WHERE ("Stadt") = 'Hamburg'
)
UNION ALL
(
SELECT
AVG ("CASEWHEN("AktuellerPreis" IS NULL,"StartPreis" / "QM","AktuellerPreis" / "QM")") AS "BerechnPreisQM",
NULL AS "AktuellerPreis",
NULL AS "StartPreis",
NULL AS "QM"
FROM
"TabETWAngebote"
WHERE ("Stadt") = 'Hamburg'
)
Hat jemand einen Tipp - Danke im voraus
Re: Duchschnitt von einem berechneteten Feld
Verfasst: So, 19.10.2008 15:07
von Barlee
Hallo bello15,
Hat jemand einen Tipp
Ja!
Code: Alles auswählen
AVG ("CASEWHEN("AktuellerPreis" IS NULL,"StartPreis" / "QM","AktuellerPreis" / "QM")") AS "BerechnPreisQM",
ist nicht ok!
probiere stattdessen:
Code: Alles auswählen
AVG (CASEWHEN("AktuellerPreis" IS NULL,"StartPreis" / "QM","AktuellerPreis" / "QM")) AS "BerechnPreisQM",
Zum Anderen musst Du Deine abgefragten Spalten in die richtige Reihenfolge bringen. Diese sind mächtig durcheinander. Immer daran denken, dass eine UNION die zweite Ergebnistabelle an die erste hängt.
Tablle1:
"StartPreis",
"AktuellerPreis",
"QM"
"BerechnPreisQM"
Tabelle2:
"BerechnPreisQM"
"AktuellerPreis",
"StartPreis",
"QM"
Deckung hättest Du nur in der Spalte "AktuellerPreis"
Gruß Barlee
Re: Duchschnitt von einem berechneteten Feld
Verfasst: Mo, 20.10.2008 19:35
von bello15
Hallo Barlee,
vielen Dank, jetzt geht's einwandfrei.
Ich glaube, 2 Dinge aus Deinem Tipp gelernt zu haben:
1. Werden 2 Abfragen miteinander verbunden, müssen die Spalten in gleicher Reihenfolge sein.
2. Für AVG oder SUM bin ich von einer Syntax SELECT AVG("Feld") AS "Feld" bzw SELECT SUM("Feld") AS "Feld" ausgegangen, wird nun ein CASEWHEN eingefügt, braucht dieser Befehl nicht auch noch in " " gesetzt werden.
Re: Duchschnitt von einem berechneteten Feld
Verfasst: Mo, 20.10.2008 20:26
von Barlee
Hallo bello15,
freut mich, wenns funktioniert.
Ich glaube, 2 Dinge aus Deinem Tipp gelernt zu haben:
1. Werden 2 Abfragen miteinander verbunden, müssen die Spalten in gleicher Reihenfolge sein.
Du meinst das richtige, ja! Man kann bei einer UNION zwar die Spalten in "falscher" Reihenfolge angeben, sinnvoll wird das Ergebnis dann allerdings in den meisten Fällen nicht sein. Dann hättest Du z.B. den "StartPreis" aus Tabelle1 und darunter steht dann "BerechnPreisQM" aus Tabelle2. Ursächlich für die Fehlermeldung war jedoch nicht die falsche Reihenfolge der Spalten, sondern die Anführungszeichen im CASEWHEN.
Für AVG oder SUM bin ich von einer Syntax SELECT AVG("Feld") AS "Feld" bzw SELECT SUM("Feld") AS "Feld" ausgegangen, wird nun ein CASEWHEN eingefügt, braucht dieser Befehl nicht auch noch in " " gesetzt werden.
Korrekt! In " " setzt Du nur Tabellennamen, Aliase, Spaltenbezeichner
Gruß Barlee