Summenbildung in abhängigkeit einer anderen Spalte

lengulins

Benutzer
Beiträge
14
Hallo,
habe folgendes Problem. Als Teil einer grossen Abfrage möchte ich in einer Spalte eine Summe abbilden. Dabei wird auf folgende Tabelle zugegriffen
Auftrag Preis
#12002 771,55 €
#12012 2.311,65 €
#12012 2.311,65 €
#12200 776,00 €
#12204 1.113,08 €
#12207 1.892,10 €
#12212 48.050,77 €
#12212 48.050,77 €
#12243 1.904,00 €
#12502 172,55 €
#12512 4.539,85 €
#12516 1.071,00 €
#12517 6.247,50 €
#12519 1.904,00 €
#12525 1.166,20 €

Ergebnis 71.920,24 €

Als Lösung soll die Summe das abgebildete Ergebnis (also die summe aller rechten, weissen Felder) liefern. D.h, ich muss ein Distinct auf die Auftraege machen und im Anschluss summieren.
Achtung: Ein SUM (DISTINCT Preis) hilft mir nicht weiter, da solche Aufträge wie #12243 und #12519 dann zusammengefasst werden, was nicht passieren darf.)
Wie stell ich das an?
Bei meinen Versuchen meine Ergebnisse in meine grosse Abfrage zu stellen, kam die Fehlermeldung:
Die Unterabfrage hat mehr als einen Wert zurückgegeben. Das ist nicht zulässig, wenn die Unterabfrage auf =, !=, <, <=, > oder >= folgt oder als Ausdruck verwendet wird.
D.h. es darf wirklich nur die Summe zurückgegeben werden und kein zweiter Wert. Ideen?
Danke Diana
------------------------------------------------------
Sorry, meine Tabelle war farbig und wurde hier nicht so übernommen. Habe jetzt nochmal nachgeholfen.
 
Werbung:
Wiso musst du ein DISTINCT verwenden wenn du keine Aufträge zusammen fassen willst? Was sind weisse Felder? Wie lautet deine "große" Abfrage? Ich kann ja schlecht aus 2 Tabellen, Auftrag und Preis, ohne Relationen eine sinnvolle Abfrage bilden, die Abfrage oder die Tabellenstruktur müsstest du also posten. Bisher kann ich dir nur sagen das du irgendwo sum(Preis) verwenden musst. Meinst du eine Summe in Form einer Spalte in der Abfrage oder als zusätzliche Zeile unter deiner eigentlichen Abfrage?
 
1. Weil ich einen Preis in abhängigkeit vom Auftrag machen will
2. alle rechten werte, die nicht 'rot' sind. Habe geschrieben, dass meine farbige Tabelle nicht dargestellt wurde.
3. Meine grosse Abfrage möchten Sie nicht sehen, da verwirre ich hier zu sehr... glauben Sie mir, auch wenn sie Profi sein sollten!!!!!
4. Es handelt sich nicht um 2 Tabellen, ich möchte aus einer Tabelle ein Aggregat filtern.
(so, so, sum(preis) muss ich also verwenden. !!!... den Kommentar stell ich hier mal so rein, weil er mich so geaergert hat)
Ich meinte so was in der Art: SELECT Sum(PR) AS Ergebnis FROM (SELECT DISTINCT Auftrag AS Auf, Preis As Pr FROM Tabelle1) As Test
als Zwischenselectanweisung in einer anderen Abfrage. Sozusagen nochmal geschachtelt.
 
Code:
SELECT    sum(preis)
FROM    (    SELECT    p.nummer_auftrag,
                    max(p.preis) AS preis
            FROM    preise p
            GROUP BY p.nummer_auftrag ) hilfstabelle
 
Werbung:
Zurück
Oben