Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   2x Sum aus gleichem Feld unterschiedliche Bedingung (https://www.delphipraxis.net/215108-2x-sum-aus-gleichem-feld-unterschiedliche-bedingung.html)

tkhandel 10. Mai 2024 07:08

Datenbank: Interbase • Version: 2020 • Zugriff über: Delphi 12

2x Sum aus gleichem Feld unterschiedliche Bedingung
 
Hallo,

ich bräuchte mal einen Ansatz für das folgende Abfrage Problem

eine Tabelle (TagesUmsatz) enthält alle Verkäufe eines Tages:

Id, MitarbeiterNr, Datum, UmsatzBrutto, Zahlart


Ergebnis soll sein:

MitarbeiterNr, Umsatz, Bar, Karte

folgende Abfrage

Select
FahrerNr,
Sum(VKBG) as Umsatz
from Tagesumsatz
where cast(Datum as Date) = '06.05.2024'
Group by FahrerNr

UNION

Select
FahrerNr,
Sum(VKBG) as Bar
from Tagesumsatz
where cast(Datum as Date) = '06.05.2024' and Zahlart = 3
Group by FahrerNr

liefert zwar das Ergebnis aber nicht zwei Spalten sondern untereinander was bei vielen fahreren zu unübersichtlich wird, wie bekomme ich die nebeneinander ?

Klaus01 10. Mai 2024 07:15

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
 
.. könnte der Ansatz auch etwas für Dich sein?

Grüße
Klaus

TurboMagic 10. Mai 2024 07:53

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
 
Zitat:

Zitat von Klaus01 (Beitrag 1536542)
.. könnte der Ansatz auch etwas für Dich sein?

Grüße
Klaus

Hallo,

man könnte damit versuchen eine Liste aus Mitarbeiter ID, Zahlart und Betrag zu erzeugen, aber
eine Liste mit MitarbeiterID, Summe Bar, Summe Karte? Da fehlt mir noch ein bisschen der Ansatz.

Grüße
TurboMagic

Jasocul 10. Mai 2024 07:55

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
 
Das wäre mein Ansatz:
Code:
Select
FahrerNr,
(Select Sum(VKBG)
from Tagesumsatz x
where x.FahrerNr = TU.FahrerNr
and cast(Datum as Date) = '06.05.2024') as UmsatzGesamt,
(Select Sum(VKBG)
from Tagesumsatz x
where x.FahrerNr = TU.FahrerNr
and cast(Datum as Date) = '06.05.2024' and Zahlart = 3) as UmsatzZA3
from Tagesumsatz TU
Group by FahrerNr
Natürlich ungeprüft.

Außerdem ist es meistens ungünstig, die DB-Felder zu CASTen, da dadurch der Index nicht mehr genutzt werden kann. Es ist i.d.R. besser, den Parameter zu CASTen.

Uwe Raabe 10. Mai 2024 08:04

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
 
Du hast bei Zugriff Delphi 12 angegeben. Das sagt aber noch nichts über die verwendeten Zugriffskomponenten (z.B. FireDAC, IBDAC, IBExpress...) aus.

Papaschlumpf73 10. Mai 2024 08:36

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
 
Mit einem SQL-Server würde ich das so machen; keine Ahnung, ob das auch mit Interbase geht:
Code:
Select
FahrerNr, Sum(VKBG) as Umsatz, SUM(CASE WHEN Zahlart=3 THEN VKNG ELSE 0 END) AS Bar
from Tagesumsatz
where cast(Datum as Date) = '06.05.2024'
Group by FahrerNr

tkhandel 10. Mai 2024 08:44

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1536547)
Du hast bei Zugriff Delphi 12 angegeben. Das sagt aber noch nichts über die verwendeten Zugriffskomponenten (z.B. FireDAC, IBDAC, IBExpress...) aus.

ich würde das als Sicht in der IB anlegen der ich dann das Tagesdatum zur Auswertung einfach übergebe ich denke das geht schneller.

Olli73 10. Mai 2024 08:53

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
 
Zitat:

Zitat von Papaschlumpf73 (Beitrag 1536552)
Mit einem SQL-Server würde ich das so machen; keine Ahnung, ob das auch mit Interbase geht:
Code:
Select
FahrerNr, Sum(VKBG) as Umsatz, SUM(CASE WHEN Zahlart=3 THEN VKNG ELSE 0 END) AS Bar
from Tagesumsatz
where cast(Datum as Date) = '06.05.2024'
Group by FahrerNr

Ja, sowas wollte ich auch gerade schreiben.


warum aber eigenlich
Code:
cast(Datum as Date) = '06.05.2024'
? Wenn Datum als Date in der Datenbank angelegt ist, sollte ein
Code:
Datum = '06.05.2024'
reichen. Oder noch besser: man verwendet Parameter. Wie schon geschrieben wurde, ist das auch wichtig für die Nutzung eines Indexes.

Papaschlumpf73 10. Mai 2024 08:56

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
 
Vielleicht ist es ein DateTime-Feld mit Uhrzeit drin.

tkhandel 10. Mai 2024 09:00

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
 
Der Ansatz von Jasocul war genau das was ich wollte also besten Dank für die Unterstützung!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 Uhr.
Seite 1 von 2  1 2      

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