![]() |
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 ? |
AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
|
AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
Zitat:
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 |
AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
Das wäre mein Ansatz:
Code:
Natürlich ungeprüft.
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 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. |
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.
|
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 |
AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
Zitat:
|
AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
Zitat:
warum aber eigenlich
Code:
? Wenn Datum als Date in der Datenbank angelegt ist, sollte ein
cast(Datum as Date) = '06.05.2024'
Code:
reichen. Oder noch besser: man verwendet Parameter. Wie schon geschrieben wurde, ist das auch wichtig für die Nutzung eines Indexes.
Datum = '06.05.2024'
|
AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung
Vielleicht ist es ein DateTime-Feld mit Uhrzeit drin.
|
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. |
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