AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken 2x Sum aus gleichem Feld unterschiedliche Bedingung
Thema durchsuchen
Ansicht
Themen-Optionen

2x Sum aus gleichem Feld unterschiedliche Bedingung

Ein Thema von tkhandel · begonnen am 10. Mai 2024 · letzter Beitrag vom 10. Mai 2024
Antwort Antwort
Seite 1 von 2  1 2      
tkhandel

Registriert seit: 2. Jan 2022
Ort: Arnsberg im Sauerland
87 Beiträge
 
Delphi 10.4 Sydney
 
#1

2x Sum aus gleichem Feld unterschiedliche Bedingung

  Alt 10. Mai 2024, 08:08
Datenbank: Interbase • Version: 2020 • Zugriff über: Delphi 12
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 ?
Jürgen
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung

  Alt 10. Mai 2024, 08:15
.. könnte der Ansatz auch etwas für Dich sein?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.936 Beiträge
 
Delphi 12 Athens
 
#3

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung

  Alt 10. Mai 2024, 08:53
.. 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
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung

  Alt 10. Mai 2024, 08:55
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.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#5

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung

  Alt 10. Mai 2024, 09:04
Du hast bei Zugriff Delphi 12 angegeben. Das sagt aber noch nichts über die verwendeten Zugriffskomponenten (z.B. FireDAC, IBDAC, IBExpress...) aus.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
434 Beiträge
 
Delphi 12 Athens
 
#6

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung

  Alt 10. Mai 2024, 09:36
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
  Mit Zitat antworten Zitat
tkhandel

Registriert seit: 2. Jan 2022
Ort: Arnsberg im Sauerland
87 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung

  Alt 10. Mai 2024, 09:44
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.
Jürgen
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
741 Beiträge
 
#8

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung

  Alt 10. Mai 2024, 09:53
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.
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
434 Beiträge
 
Delphi 12 Athens
 
#9

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung

  Alt 10. Mai 2024, 09:56
Vielleicht ist es ein DateTime-Feld mit Uhrzeit drin.
  Mit Zitat antworten Zitat
tkhandel

Registriert seit: 2. Jan 2022
Ort: Arnsberg im Sauerland
87 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: 2x Sum aus gleichem Feld unterschiedliche Bedingung

  Alt 10. Mai 2024, 10:00
Der Ansatz von Jasocul war genau das was ich wollte also besten Dank für die Unterstützung!!
Jürgen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz