Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL : select mit Fallabfrage (https://www.delphipraxis.net/175440-sql-select-mit-fallabfrage.html)

Hansa 21. Jun 2013 23:38

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.

sx2008 22. Jun 2013 00:39

AW: SQL : select mit Fallabfrage
 
Zitat:

Zitat von baumina (Beitrag 1219416)
Wie soll ich denn sonst an meine Sum(Anzahl) kommen wenn nicht über GROUP BY?

Ohne GROUP BY wird natürlich auch eine Summe gebildet und zwar die Summe über alle Datensätze die durch die WHERE-Bedingung angesprochen werden.
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:
SELECT Sum(Preis) FROM Beispieltabelle
GROUP BY Farbe
-- Ergebnis: 3 Datensätze Inhalt:
-- 15.0
-- 10.0
-- 27.0
Man sieht aber dass diese Ergebnistabelle ziemlich sinnlos ist weil der Bezug zu dem Group-By-Feld verloren gegangen ist.
Deshalb sind die Felder aus der Group-By-Klausel eigentlich immer in der Feldliste enthalten:
SQL-Code:
SELECT Farbe, Sum(Preis) FROM Beispieltabelle
GROUP BY Farbe
-- Ergebnis: 3 Datensätze Inhalt:
-- blau | 15.0
-- grün | 10.0
-- rot | 27.0
Würde man jetzt alle diese Teilsummen aufsummieren dann kommt man wieder auf die Gesamtsumme von 52.0.

baumina 22. Jun 2013 08:04

AW: SQL : select mit Fallabfrage
 
Zitat:

Zitat von sx2008 (Beitrag 1219421)
Ohne GROUP BY wird natürlich auch eine Summe gebildet und zwar die Summe über alle Datensätze die durch die WHERE-Bedingung angesprochen werden.
Vereinfacht gesagt wird ohne GROUP BY alles in einen Topf summiert.

Eieiei, das war mir nicht bekannt, ich werds gleich am Montag ausprobieren.

baumina 24. Jun 2013 06:56

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:
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
Danke an euch!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 Uhr.
Seite 2 von 2     12   

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