Einzelnen Beitrag anzeigen

BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#1

Offene Posten: Artikel mit LIST anhägen vervielfacht Summe

  Alt 4. Feb 2018, 11:44
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC
Hallo,

ich habe folgende 3 Tabellen aus denen ich nicht bezahlte Rechnungen ermitteln möchte:

Code:
FibuBuchung (hier sind alle Zahlungen enthalten)
------------
Gegenkonto
Konto
Betrag
...

Vorgang (hier sind alle Rechungen enthalten)
-------
VgNr
Brutto
...

VorgangPos (hier sind alle Positionen der Rechnungen enthalten)
-----------
PosNr
VgNr
Artikel
...

Das mache ich bisher so. Das klappt auch:

SQL-Code:
select
  v.VgNr,
  v.brutto,
  sum(case
    when gegenkonto >= 10000 and gegenkonto <= 69999 then Betrag
    when konto >= 10000 and konto <= 69999 then -Betrag
    end)
  as Offen
from
  FibuBuchung b
left join
  Vorgang v on b.vgnr = v.vgnr
group by
  v.VgNr,
  v.brutto
order by
  v.VgNr
Ergebnis ist dann z.B.
Code:
VgNr       Brutto   Offen
2018-0038  10.234 -10.234
2018-0078     123     -50
Nun möchte ich zu jedem Vorgang (=Rechnung) die zugehörigen Positionen (=Artikel) in einer weiteren Spalte ausgeben:

Code:
VgNr       Brutto   Offen Positionen
2018-0038  10.234 -10.234 PC, Monitor, Fax
2018-0078     123     -50 Tastatur, Maus
Dazu habe ich den SQL-Ausdruck wie folgt ergänzt:

SQL-Code:
select
  v.VgNr,
  v.brutto,
  sum(case
    when gegenkonto >= 10000 and gegenkonto <= 69999 then Betrag
    when konto >= 10000 and konto <= 69999 then -Betrag
    end)
  as Offen,
  LIST (VorgangPos.Artikel, ', ') as Positionen <---- NEU
from
  FibuBuchung b
left join
  Vorgang v on b.vgnr = v.vgnr
left join <---- NEU
  VorgangPos on v.VgNr = VorgangPos.VgNr <---- NEU
group by
  v.VgNr,
  v.brutto
order by
  v.VgNr
Das ergibt folgendes Problem:
Zwar sind die Positionen und aufgelsitet, der offene Betrag wird aber so oft aufsummiert, wie es Positionen gibt. Gibt es z.B. 3 Position, ist der offene Betrag 3x so hoch wie er eigentlich sein sollte:

Code:
VgNr       Brutto   Offen Positionen
2018-0038  10.234 -30.702 PC, Monitor, Fax
2018-0078     123    -100 Tastatur, Maus
Wer kann helfen? Vielen Dank im Voraus!

Geändert von BlueStarHH ( 4. Feb 2018 um 14:37 Uhr)
  Mit Zitat antworten Zitat