![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC
Offene Posten: Artikel mit LIST anhägen vervielfacht Summe
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:
Ergebnis ist dann z.B.
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
Code:
Nun möchte ich zu jedem Vorgang (=Rechnung) die zugehörigen Positionen (=Artikel) in einer weiteren Spalte ausgeben:
VgNr Brutto Offen
2018-0038 10.234 -10.234 2018-0078 123 -50
Code:
Dazu habe ich den SQL-Ausdruck wie folgt ergänzt:
VgNr Brutto Offen Positionen
2018-0038 10.234 -10.234 PC, Monitor, Fax 2018-0078 123 -50 Tastatur, Maus
SQL-Code:
Das ergibt folgendes Problem:
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 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:
Wer kann helfen? Vielen Dank im Voraus!
VgNr Brutto Offen Positionen
2018-0038 10.234 -30.702 PC, Monitor, Fax 2018-0078 123 -100 Tastatur, Maus |
AW: Offene Posten: Artikel mit LIST anhägen vervielfacht Summe
Durch diese Zeilen
SQL-Code:
bekommst Du im Select pro Vorgang soviele Zeilen, wie es Vorgangspositionen gibt. Dementsprechend wird beim Summieren dann auch der Betrag "zuviel summiert".
left join <---- NEU
VorgangPos on v.VgNr = VorgangPos.VgNr <---- NEU Kann es nicht testen, aber eventuell könnte das ein Ansatz sein:
SQL-Code:
select
v.VgNr, v.brutto, Offen, LIST (VorgangPos.Artikel, ', ') as Positionen from ( 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 ) a, left join VorgangPos on a.VgNr = VorgangPos.VgNr order by a.VgNr |
AW: Offene Posten: Artikel mit LIST anhägen vervielfacht Summe
Danke, damit klappt es!
|
AW: Offene Posten: Artikel mit LIST anhägen vervielfacht Summe
mal eine blöde Frage, was sind das für Bedingungen, bei denen Du den Betrag ausgibst, Vorzeichen änderst?
Und was geschieht, wenn die Bedingungen nicht erfüllt sind? Zitat:
|
AW: Offene Posten: Artikel mit LIST anhägen vervielfacht Summe
Es scheint sich um eine Datevkonforme Buchhaltung zu handeln.
10000-69999: Debitoren, 70000-99999: Kreditoren. Normalfall Buchung Umsatz an Debitor. Wenn also Debitor in Konto ist, dann handelt es sich um einen Storno, Umkehrung durch S/H oder Betrag ist negativ. Deshalb wird dieser in der OPOS-Aufstellung negiert. |
AW: Offene Posten: Artikel mit LIST anhägen vervielfacht Summe
mkinzler war schneller und liegt richtig.
|
AW: Offene Posten: Artikel mit LIST anhägen vervielfacht Summe
Ach, trotz Kaffee total gepennt!
Nicht dass ich Datev konforme Buchhaltung kenne, aber ich habe nicht mal geschnallt, dass es bei den Kriterien um Buchungsschlüssel geht. Sorry & Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:13 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