![]() |
AW: SQL : select mit Fallabfrage
Das da sieht eventuell nach CASE aus. Da lässt sich IF THEN ELSE jedenfalls einsetzen. Stichwort : Kreuztabelle/Pivot-Tabelle.
|
AW: SQL : select mit Fallabfrage
Zitat:
Vereinfacht gesagt wird ohne GROUP BY alles in einen Topf summiert. Mit GROUP BY können mehrere Töpfe (=Datensätze) entstehen wobei jeder Topf seine eigene Teilsumme hat. Beispieltabelle
Code:
Farbe | Preis
================== rot | 5.0 grün | 10.0 blau | 15.0 rot | 22.0
SQL-Code:
SELECT Sum(Preis) FROM Beispieltabelle
-- Ergebnis: 1 Datensatz Inhalt: 52.0
SQL-Code:
Man sieht aber dass diese Ergebnistabelle ziemlich sinnlos ist weil der Bezug zu dem Group-By-Feld verloren gegangen ist.
SELECT Sum(Preis) FROM Beispieltabelle
GROUP BY Farbe -- Ergebnis: 3 Datensätze Inhalt: -- 15.0 -- 10.0 -- 27.0 Deshalb sind die Felder aus der Group-By-Klausel eigentlich immer in der Feldliste enthalten:
SQL-Code:
Würde man jetzt alle diese Teilsummen aufsummieren dann kommt man wieder auf die Gesamtsumme von 52.0.
SELECT Farbe, Sum(Preis) FROM Beispieltabelle
GROUP BY Farbe -- Ergebnis: 3 Datensätze Inhalt: -- blau | 15.0 -- grün | 10.0 -- rot | 27.0 |
AW: SQL : select mit Fallabfrage
Zitat:
|
AW: SQL : select mit Fallabfrage
Gut funktioniert alles. GREATEST hab ich jetzt reingenommen und beide GROUP BY raus. Keine Ahnung warum ich der Meinung war, dass SUM nur mit GROUP BY geht. Aussehen tuts nun so:
SQL-Code:
Danke an euch!
SELECT greatest(coalesce(sum(sl.Anzahl),0) -
coalesce((SELECT sum(lesl.Anzahl) FROM tbllesl lesl WHERE sl.plmartid=lesl.plmartid AND au.auid=lesl.auid),0),0) AnzFehlt FROM tblauplm au LEFT JOIN tblplmausl sl ON au.plmauid=sl.plmauid WHERE sl.BuchTyp is NULL AND au.auid=:AUID AND sl.PLMARTID=:PLMARTID |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz