AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

select sum mit feldausgabe

Ein Thema von HPB · begonnen am 27. Jul 2016 · letzter Beitrag vom 28. Jul 2016
Antwort Antwort
Seite 2 von 2     12   
HPB

Registriert seit: 2. Jun 2008
365 Beiträge
 
Delphi XE7 Professional
 
#11

AW: select sum mit feldausgabe

  Alt 27. Jul 2016, 18:12
Was ist für den Anfang mit

SQL-Code:
SELECT SUM(Zahlung), KontoArt
WHERE (KontoArt = 'E') or (KontoArt = 'A')
GROUP BY KontoArt
Das sollte doch schon mal die beiden Summen ergeben.

Bleibt immer noch unklar, was mit den übrigen Feldern gemeint ist.
Die beiden Summen werden ausgegeben.
Delphi-Quellcode:
select
sum(Zahlung) as Gesamt, KontoArt
Es werden die beiden Summen unter dem Feldnamen "Gesamt" ausgegeben,
jeweils mit der Kontoart 'E oder A'.
Aber wie greife ich auf die einzelnen Summe zu um sie anzuzeigen?


Ich werde das ganze für einen Fast-Report gebrauchen.
Der Report wird in etwa so aufgebaut sein:
Gruppenkopf: AuszugsNr, Beginn und Ende als Datum, und die Summe für den Auszug (Einzahlungen - Ausgabe)
Im Detail: Datum, KontoNr, Kontoname, Buchungstext, Zahlung.

Mit Gruß HPB
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#12

AW: select sum mit feldausgabe

  Alt 27. Jul 2016, 18:20
Falls in Kontoart nur 'A' oder 'E' steht reicht ein einfaches
Code:
SELECT SUM(Zahlung), KontoArt
GROUP BY KontoArt
Da ich mit or nixcht soo gute Erfahrungen gemacht habe schlage ich vor
[CODE=SQL]
Code:
SELECT SUM(Zahlung), KontoArt
where Kontoart='A'
GROUP BY KontoArt
Union
SELECT SUM(Zahlung), KontoArt
where Kontoart='E'
GROUP BY KontoArt
order by KontoArt
SQL-Code:
select
  sum(Zahlung) as Einnahme,
  sum(Zahlung) as Ausgabe,
  (select SUM(Einnahme) where KontoArt = 'E') as Ges_Einnahmen,
  (select SUM(Ausgabe= where KontoArt = 'A') as Ges_Ausgabe


 from KASSENBUCH
 where extract(year from datum) in (2016, 2016)
Gibt es die Felder "Einnahme" und "Ausgabe" in der Tabelle "Kassenbuch"?
Wenn ich mich richtig erinnere, nein!
Also versuch es mal mit
Code:
(select SUM(Zahlung) where KontoArt = 'E') as Ges_Einnahmen,
und wie schon weiter oben angemerkt
Code:
  sum(Zahlung) as Einnahme,
  sum(Zahlung) as Ausgabe,
wird in Einnahme und Ausgabe den selben Wert liefern.



Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: select sum mit feldausgabe

  Alt 27. Jul 2016, 18:25
SQL-Code:
select
 sum(Zahlung) as Einnahme,
 sum(Zahlung) as Ausgabe,
 (select SUM(Einnahme) where KontoArt = 'E') as Ges_Einnahmen,
 (select SUM(Ausgabe= where KontoArt = 'A') as Ges_Ausgabe -- <=== HIER IST DER FEHLER


from KASSENBUCH
where extract(year from datum) in (2016, 2016)
Bekomme beim Testen die Fehlermeldung: "Token unknow - line 4, column 23 - Where"
Der obige Code scheint zu funktionieren. Warum ich beim unteren Code
eine Fehlermeldung bekomme kann ich nicht nachvollziehen.
Mit Gruß HPB
Schau mal, da ist vor dem WHERE KontoArt = 'A' ein "=" Zeichen reingerutsch anstatt eine schließene Klammer ")". Ob das jetzt zum gewünschten Ergebnis führt kann ich nicht sagen, aber die Fehlermeldung sollte verschwinden.
  Mit Zitat antworten Zitat
HPB

Registriert seit: 2. Jun 2008
365 Beiträge
 
Delphi XE7 Professional
 
#14

AW: select sum mit feldausgabe

  Alt 27. Jul 2016, 18:35
SQL-Code:
select
 sum(Zahlung) as Einnahme,
 sum(Zahlung) as Ausgabe,
 (select SUM(Einnahme) where KontoArt = 'E') as Ges_Einnahmen,
 (select SUM(Ausgabe= where KontoArt = 'A') as Ges_Ausgabe -- <=== HIER IST DER FEHLER


from KASSENBUCH
where extract(year from datum) in (2016, 2016)
Bekomme beim Testen die Fehlermeldung: "Token unknow - line 4, column 23 - Where"
Der obige Code scheint zu funktionieren. Warum ich beim unteren Code
eine Fehlermeldung bekomme kann ich nicht nachvollziehen.
Mit Gruß HPB
Schau mal, da ist vor dem WHERE KontoArt = 'A' ein "=" Zeichen reingerutsch anstatt eine schließene Klammer ")". Ob das jetzt zum gewünschten Ergebnis führt kann ich nicht sagen, aber die Fehlermeldung sollte verschwinden.
Danke für Deine Aufmerksamkeit.
Die schliessende Klammer fehlt in der Tat. Aber der Fehler tritt ja schon in der Zeile 4 beim "Where" auf.
Mit Gruß HPB
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#15

AW: select sum mit feldausgabe

  Alt 28. Jul 2016, 11:11
Zitat:
(select SUM(Einnahme) where KontoArt = 'E') as Ges_Einnahmen,
Und von was soll bei select SUM(Einnahme) where KontoArt = 'E' das SUM angezeigt werden?

Da fehlt mindestens noch ein FROM dazwischen.


Zitat:
Aber wie greife ich auf die einzelnen Summe zu um sie anzuzeigen?
Ich klinke mich hier aus.
Nochmal will ich mich nicht wiederholen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (28. Jul 2016 um 11:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#16

AW: select sum mit feldausgabe

  Alt 28. Jul 2016, 11:13
[del] blöder Doppelpost
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: select sum mit feldausgabe

  Alt 28. Jul 2016, 11:45
Moin!

sum(Zahlung) as Umsatz, -- alles zusammen das ist aber leider falsch; wenn er zwei Arten von Buchungen hat, nämlich EIN- und AUS- Zahlungen, dann wirds nur richtig, wenn die Werte in den Buchungssätzen mit Vorzeichen versehen werden!

Wenn die Werte berechnet werden, wie Uwe Raabe es vorgegeben hat, dann kann man anschließend noch saldieren ...

Gruß Rolf
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#18

AW: select sum mit feldausgabe

  Alt 28. Jul 2016, 12:53
das ist aber leider falsch; wenn er zwei Arten von Buchungen hat, nämlich EIN- und AUS- Zahlungen, dann wirds nur richtig, wenn die Werte in den Buchungssätzen mit Vorzeichen versehen werden!
Wurde dazu schon irgendwas gesagt? (kann mich nicht erinnern)

Aber auch da kann man die SUM für "Einzahlungen" und "Ausgabe" getrennt summieren und dann verrechnen (Einzahlungen-Ausgabe).
Und wenn die "Ausgaben" negativ sind, dann halt Einzahlungen+Ausgabe , bzw. man kann das dann problemlos mit einem SUM gemeinsam zusammenrechnen lassen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: select sum mit feldausgabe

  Alt 28. Jul 2016, 13:03
@himitsu: Na klar, weil SUM ja nun mal "zusammenrechnet"

ich würde es vielleicht so machen: (Edit: 3. SUM: dabei darf es aber nur diese beiden Kontenarten geben!)

Delphi-Quellcode:
SELECT
   SUM(CASE WHEN Kontoart = 'ETHEN Zahlung ELSE 0 END) AS Gesamt_Ein,
   SUM(CASE WHEN Kontoart = 'ATHEN Zahlung ELSE 0 END) AS Gesamt_Aus,
   SUM(CASE WHEN Kontoart = 'ETHEN Zahlung ELSE Zahlung * -1 END) AS Gesamt   
FROM
   Kassenbuch
wobei ich nicht weiss, ob diese Syntax von Interbase unterstützt wird.
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney

Geändert von rokli (28. Jul 2016 um 13:05 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 01:38 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