Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zusammenfassen aber verschiedene Bedingungen (https://www.delphipraxis.net/116829-zusammenfassen-aber-verschiedene-bedingungen.html)

Privateer3000 7. Jul 2008 11:16

Datenbank: mdb • Zugriff über: ado

Zusammenfassen aber verschiedene Bedingungen
 
Hihio,
ich häng ein wenig fest.
Ich benötige 3 mal eine Punktezusammenfassung
allerdings zu etwas unterschiedlichen Bedingungen.
Also etwa:
SQL-Code:
Select spie,sum(me*pu) AS zalles FROM t1 WHERE spie=spnummer AND fertig=False
Nun kommen zwei weitere Abfragen, etwa so:
SQL-Code:
Select spie,sum(me*pu) AS zalles FROM t1 WHERE spie=spnummer AND sonder=True AND fertig=False
und
SQL-Code:
Select spie,sum(me*pu) AS zalles FROM t1 WHERE spie=spnummer AND verlor=True AND fertig=False
Nun finden alle drei Abfragen hintereinander statt und funktionieren auch.
Kann man dies zusammenfassen zu einer, oder fehlt hier eine Normalisierung
zum Beispiel?

Grüße

mkinzler 7. Jul 2008 11:23

Re: Zusammenfassen aber verschiedene Bedingungen
 
SQL-Code:
Select
    spie,
    sum(me*pu) AS zalles,
    SUM( IIF( Sonder = True, me*pu, 0)) as zsonder,
    SUM( IIF( Verlor = True, me*pu, 0)) as zverlor
FROM
    t1 
WHERE
    spie=spnummer AND fertig=False;

Privateer3000 7. Jul 2008 11:28

Re: Zusammenfassen aber verschiedene Bedingungen
 
Danke mkinzler!
Ist das IIF korrekt?

mkinzler 7. Jul 2008 11:30

Re: Zusammenfassen aber verschiedene Bedingungen
 
Könnte auch nur If() heissen ( ist m.W. beim MSSQL so)

Privateer3000 7. Jul 2008 11:35

Re: Zusammenfassen aber verschiedene Bedingungen
 
Danke,
eine letzte Frage noch, was bedeutet das in
SQL-Code:
SUM( IIF( Sonder = True, me*pu, 0)) as zsonder
da ,0?

mkinzler 7. Jul 2008 11:38

Re: Zusammenfassen aber verschiedene Bedingungen
 
Das IIF() liefert für jede Zeile, wenn die Bedingung wahr ist me*pe zurück sonst 0. Diese Werte werden dann für summiert.

Privateer3000 7. Jul 2008 11:45

Re: Zusammenfassen aber verschiedene Bedingungen
 
Ich hab es so probiert,
nun kommt eine Fehlermeldung
"Undefinierte Funktion 'if' in Ausdruck".
Woran kann das liegen?

mkinzler 7. Jul 2008 11:52

Re: Zusammenfassen aber verschiedene Bedingungen
 
In Access müsste es IIF() heissen. Sonst könnte man es auch mit CASE..WHEN versuchen

Privateer3000 7. Jul 2008 12:14

Re: Zusammenfassen aber verschiedene Bedingungen
 
Perfekt !
genauso funktioniert es.
Was ist das nun genau?
Ein subselect?
Können die Aggregate auch unterschiedlich sein?

mkinzler 7. Jul 2008 12:19

Re: Zusammenfassen aber verschiedene Bedingungen
 
Zitat:

Was ist das nun genau?
Ein subselect?
Nein eine Funktion die auf die Werte angewandt wird.
Können die Aggregate auch unterschiedlich sein? Ja

Privateer3000 7. Jul 2008 12:30

Re: Zusammenfassen aber verschiedene Bedingungen
 
Ok, besten Danke für die Lektion!

RavenIV 7. Jul 2008 12:40

Re: Zusammenfassen aber verschiedene Bedingungen
 
Hast Du mal darüber nachgedacht, der Tabelle und den Spalten anständige Namen zu geben?

Oder weisst Du in einem halben Jahr noch, was
spie, me, pu, verlor und fertig
bedeuten sollen?

Privateer3000 7. Jul 2008 12:40

Re: Zusammenfassen aber verschiedene Bedingungen
 
das war kein Originalcode
sondern Gedankenbeispiele...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 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