PDA

View Full Version : SQL: Sort mit Rechenergebnis



KaEl
23-03-06, 12:55
Hallo, ich habe folgendes Problem:

In einer Tabelle gibt es den Erlös eines Produktes und den Listenpreis.

Es soll per SQL-Select die Differenz in EUR (erloes-liste) und in % (((erloes-liste)*100)/liste) berechnet werden.

Die Schwierigkeit: Die abgerufenen Zeilen sollen nach der %-Differenz sortiert sein.

Geht das überhaupt, oder muss ich zuerst in eine "Hilfsdatei" schreiben?

Danke für die Antworten
KaEl

Frank Hildebrandt
23-03-06, 13:22
select erloes-liste, (((erloes-liste)*100)/liste) as erg from meinedatei order by erg

JonnyRico
23-03-06, 13:27
Hallo, ich habe folgendes Problem:

In einer Tabelle gibt es den Erlös eines Produktes und den Listenpreis.

Es soll per SQL-Select die Differenz in EUR (erloes-liste) und in % (((erloes-liste)*100)/liste) berechnet werden.

Die Schwierigkeit: Die abgerufenen Zeilen sollen nach der %-Differenz sortiert sein.

Geht das überhaupt, oder muss ich zuerst in eine "Hilfsdatei" schreiben?

Danke für die Antworten
KaEl

Hi,

da machst du dann im "SELECT" (((erloes-liste)*100)/liste) AS Abweichung
und in der Order Klauses: "Order by Abweisung".

Gruß

Sascha

JonnyRico
23-03-06, 13:29
Nachtrag:

Mit ASC (Aufsteigend) oder DESC (Absteigend) kannst du die die Ergebnistabelle dann noch dementsprechend sortieren.

Order by FELD1 ASC

Gruß

Sascha

KaEl
23-03-06, 15:18
Hallo zusammen,

leider ist es doch nicht ganz so einfach. Ich "paste" mal das komplette SQL-Statement:

select artikel, sum(menge), sum(erloes), sum(liste), sum(delta),
(delta*100/liste) as proz
from tabelle
group by artikel
order by proz, artikel

Das funktioniert so leider nicht. Es gibt ja viele,viele Zeilen mit dem gleichen Artikel - die sollen alle kumuliert werden. Die %-Abweichung wird dann nur über die Summenzeile eines Artikels berechnet ... und dann soll danach sortiert werden.

Hat da jemand eine Idee?

Gruß
KaEl

Frank Hildebrandt
23-03-06, 15:28
Versuch den mal. Ich hoffe ich habe keine Tippfehler gemacht.

select artikel,
menge,
erloes,
liste,
delta,
(delta*100/liste) as proz
from

(select artikel,
sum(menge) as menge,
sum(erloes) as erloes,
sum(liste) as liste,
sum(delta) as delta
from tabelle
group by artikel) as dummy

order by proz, artikel

KaEl
23-03-06, 15:44
Super - das war's!!!

Herzlichen Dank für die Hilfe.


Schönen Abend noch
Karlhans