AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Offene Posten: Artikel mit LIST anhägen vervielfacht Summe
Thema durchsuchen
Ansicht
Themen-Optionen

Offene Posten: Artikel mit LIST anhägen vervielfacht Summe

Ein Thema von BlueStarHH · begonnen am 4. Feb 2018 · letzter Beitrag vom 5. Feb 2018
 
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
855 Beiträge
 
Delphi 11 Alexandria
 
#1

Offene Posten: Artikel mit LIST anhägen vervielfacht Summe

  Alt 4. Feb 2018, 12: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 15:37 Uhr)
  Mit Zitat antworten Zitat
 


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 03:15 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 by Thomas Breitkreuz