![]() |
Datenbank: Oracle • Version: 10g • Zugriff über: ADO
Mehrerer Datensätze pro Zeitraum generieren
Hallo,
für eine Schnittstelle zu einer komplett anders arbeitenden Software als unsere muss ich historisierte Daten liefern. Dabei liegen bei uns die Historien in Form eines von- und eines bis Datums vor. In der anderen Software gibt es pro Jahr und pro Monat immer einen Datensatz. Ich muss daher einen bei uns mehrere (sagen wir mal 5) Monate gültigen Datensatz 5 mal liefern wobei Monat (und. ggf. Jahr) heraufgezählt werden. Hat irgendwer eine Idee, wie das per SQL gehen könnte? Im Notfall kann ich das natürlich in der Verarbeitung machen, aber ich kann mir auch eine Tabelle vorstellen, wo das cool wäre wenn dass per SQL ginge. Somit soll werden aus: [code] PNR | VON_____ | BIS______ | IrgendwecheAnderen Datenfelder 123 | 01.01.2014 | 31.05.2014 | Willi Müller ... soll werden PNR | Jahr | Monat | IrgendwecheAnderen Datenfelder 123 | 2014 | 01 | Willi Müller ... 123 | 2014 | 02 | Willi Müller ... 123 | 2014 | 03 | Willi Müller ... 123 | 2014 | 04 | Willi Müller ... 123 | 2014 | 05 | Willi Müller ... [code] |
AW: Mehrerer Datensätze pro Zeitraum generieren
Nun wenn ich Dich richtig verstanden habe, dann wird aus von__ minmonat und bis__ maxmonat.
Und dann
Code:
(nein, mit der SQL-syntax steh ich auf Kriegsfuß, darum nagel mich nicht darauf fest)
for i:=minmonat to maxmonat do insert.....
Gruß K-H |
AW: Mehrerer Datensätze pro Zeitraum generieren
Erstelle dir eine Hilfstabelle, die alle Datum vom 1.1.1900 bis zum 31.12.2100 enthält (z.B.). So eine Datedimensiontable ist so fundamental, das es diverse
![]() Und da Du nun eine entsprechende Tabelle hast, kannst du einfach diese Query ausführen:
SQL-Code:
Select <Daten>
from DateDimension join MeineTabelle on DateDimension.Date between MeineTabelle.MinDatum and MeineTabelle.MaxDatum |
AW: Mehrerer Datensätze pro Zeitraum generieren
Viele DBMS besitzen bereits Funktionen zum Generieren von "Serien" und wenn nicht, dann kann man sich dort bestimm selber eine passende Funktion selber erstellen, falls sowas nicht schon jemand gemacht hat.
![]() |
AW: Mehrerer Datensätze pro Zeitraum generieren
Zitat:
Code:
Die Generierlösung hat aber ihre Grenzen, wenn Wochenenden, bewegliche Feiertage (oder fehlende bei Ungläubigen usw.), spezifische Arbeitstage des Unternehmens, .. zu berücksichtigen sind. Das wird dann schnell frickelig, auch wenn der Ansatz erstmal bequem scheint.
Select 123 as id, 2014 y, Rownum m, 'Willi Müller' as nme From dual
Connect By Rownum <= to_number(to_char(to_date('31.05.2014', 'DD.MM.YYYY'),'MM')) Da kommt dann doch die Dimension Tabelle von Dejan Vu ins Spiel. Da kann man den ganzen Kram deklarieren, den man berücksichtigen muss und dann je nach Bedarf filtern. |
AW: Mehrerer Datensätze pro Zeitraum generieren
Zitat:
|
AW: Mehrerer Datensätze pro Zeitraum generieren
Ich würde diese Tabelle einmalig erstellen. Überleg mal: 10000 Zeilen und Du bist für die nächsten 30 Jahre safe. Die Tabelle enthält (bzw. kann) ja auch sehr nützliche Informationen über Wochentag, Tag des Jahres etc. Sowas baust Du dir einmal und hast dann das für alle Projekte. So eine Tabelle passt einfach immer. Du kannst sie peu à peu erweitern.
Und wie gesagt: Tools, die Dir so eine Tabelle bauen, gibt es wie Sand am Meer. Du kannst dort z.B. auch Betriebsversammlungen einpflegen oder Betriebsstörungen etc. Dann versaut dir das nicht mehr die Statistik. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 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