![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBX
Select mit horizontal und vertikalen Daten
Hallo Delphianer,
ich habe hier zwei Tabellen und möchte gerne ein Ergebnis aus der Tabelle2 haben was zur Tabelle1 ein "passt". Hier mal die Spalten Tabellen Tabelle1:
Delphi-Quellcode:
Jahr,Kunde,Monat_01,Monat_02,Monat_03,Monat_04,Monat_05,Monat_06,Monat_07,Monat_08,Monat_09,Monat_10,Monat_11,Monat_12
Tabelle2:
Delphi-Quellcode:
Jahr,Kunde,Monat,Betrag,Rechnugsnr, ...
In der Tabelle1 sind die Planzahlen (Umsätze) je Kunden je Monat für das aktuelle Jahr vorhanden. In der Tabelle2 sind dann die Beträge der einzelenen Rechnungen je Monat, je Jahr vorhanden. Als Ergebnis möchte in nun das die Werte der Tabelle2 auch horizontal und nicht vertikal sind. D.h. ich möchte je Kunde je Jahr eine Zeile haben in dem dann die Monate hintereinander stehen. Die Beträge sollte je Monat summiert sein, da es ja mehr als eine Rechnung je Monat geben kann. Hat da jemand ein Tip für mich wie ich es hinbekommen kann. Es wäre schon wenn es mit deinen Select gehen würd und ich nicht dazu extra was in meinen Programm machen müsste. Danke schon einmal Tanja |
AW: Select mit horizontal und vertikalen Daten
Hi Tanja,
mit Firebird arbeite ich nicht, habe es mal mit einem anderen SQL-Dialekt probiert (SAS). So in diese Richtung könnte es klappen mit einfachen SQL-Mitteln. Einige Implementierungen unterstützen auch ein PIVOT-Kommando, da evtl. noch mal selber suchen. Hier also was einfaches als Denkanstoss, für mehr Spalten einfach mehr Summen o.ä. reinnehmen:
Code:
Statt IFN bei Firebird die passende Funktion suchen, die ein numerisches Ergebnis einer IF-Funktion liefert, gibt es bestimmt.
create table SalesHorizontal as
select Jahr, Kunde, sum (ifn (Monat= 1, Betrag, 0)) as Monat_01, sum (ifn (Monat= 2, Betrag, 0)) as Monat_02, sum (ifn (Monat= 3, Betrag, 0)) as Monat_03, sum (ifn (Monat= 4, Betrag, 0)) as Monat_04, sum (ifn (Monat= 5, Betrag, 0)) as Monat_05, sum (ifn (Monat= 6, Betrag, 0)) as Monat_06, sum (ifn (Monat= 7, Betrag, 0)) as Monat_07, sum (ifn (Monat= 8, Betrag, 0)) as Monat_08, sum (ifn (Monat= 9, Betrag, 0)) as Monat_09, sum (ifn (Monat=10, Betrag, 0)) as Monat_10, sum (ifn (Monat=11, Betrag, 0)) as Monat_11, sum (ifn (Monat=12, Betrag, 0)) as Monat_12 from SalesVertical group by Jahr, Kunde; Viele Grüße, Matthias |
AW: Select mit horizontal und vertikalen Daten
Hallo Matthias,
danke das war es. So funktioniert es echt super. Bei Firebird ist es iif Tanja |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:42 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-2025 by Thomas Breitkreuz