![]() |
Re: SQL oder nicht SQL ...
Zitat:
|
Re: SQL oder nicht SQL ...
Warum so komplizert?
Leg dir eine Tabelle mit den Monaten an... Tabelle Monate...
SQL-Code:
Inhalt...
CREATE TABLE Monate (
monat INT NOT NULL , Bezeichnung varchar (50) NOT NULL , CONSTRAINT [PK_Monate] PRIMARY KEY (monat_id) ON PRIMARY ) ON PRIMARY
Code:
Und hol dir deine Daten...
Monat Bezeichnung
1 Januar 2 ... 3 4 5 6 7 8 9 10 11 12
SQL-Code:
Gruss
SELECT *
FROM (SELECT * FROM monate, (SELECT DISTINCT jahr FROM umsatz WHERE jahr BETWEEN 2005 AND 2006) x) x LEFT JOIN umsatz u ON x.jahr = u.jahr AND x.monat = u.monat ORDER BY x.jahr, x.monat Thorsten |
Re: SQL oder nicht SQL ...
Omata, was ist bei einer Monatstabelle denn gewonnen ? Siehe meine Betriebsferien. :mrgreen: Den Urlaub zu unterbrechen, um einen 0-Umsatz einzugeben, das hätte ich gespart. Stattdessen müsste ich doch 2-mal zurückfliegen, um eben nur einen überflüssigen 0-Umsatz-Monat anzulegen. :P Gut, man könnte natürlich jetzt schon Monate bis zur Rente anlegen. Am Speicherplatz sollte es kaum liegen. :mrgreen:
|
Re: SQL oder nicht SQL ...
Hansa, du scheint das Problem nicht zu verstehen. Nur weil in einem Monat kein Umsatz generiert wird, existiert dieser Monat doch trotzdem!
|
Re: SQL oder nicht SQL ...
@Hansa: Ich kann deinen Einwand leider nicht nachvollziehen.
Man kann die Jahre einschränken, auf Monate könnte man das auch noch ohne weiters. Und was mit deinen komischen Betriebsferien ist weiss ich auch nicht. Mir ging es nur darum die Daten, die in der Datenbank stehen auszulesen und darzustellen. Wie auch immer, ihr könnt meinen Beitrag ja überlesen... Gruss Thorsten |
Re: SQL oder nicht SQL ...
Zitat:
|
Re: SQL oder nicht SQL ...
Wenn er aber eine Umsatzliste pro Monat haben will, will er eine pro Monat und nicht pro Monat der Werte besitzt. Das Jahr hat 12 Monate egal wieviel Monate ein Betrieb vielleicht Ferien hat oder nicht.
|
Re: SQL oder nicht SQL ...
Klar können wir diskutieren.
Ich dachte das mit den leeren Monaten war gerade gewollt. Damit eventuelle Lücken aufgefüllt werden. Man kann natürlich noch einbauen, das Monate die in der Zukunft liegen noch nicht ausgegeben werden. Ich weiss jetzt gerade nicht wie ich an das aktuelle Datum in FB komme. Für MSSQL würde das so aussehen...
SQL-Code:
Gruss
SELECT *
FROM (SELECT * FROM monate, (SELECT DISTINCT jahr FROM umsatz WHERE jahr BETWEEN 2005 AND 2006) x) x LEFT JOIN umsatz u ON x.jahr = u.jahr AND x.monat = u.monat WHERE x.jahr < YEAR(GETDATE()) OR (x.jahr = YEAR(GETDATE()) AND x.monat <= MONTH(GETDATE())) ORDER BY x.jahr, x.monat Thorsten |
Re: SQL oder nicht SQL ...
Zitat:
|
Re: SQL oder nicht SQL ...
Zunächst mal vielen Dank für die interessante Diskussion. Hattte einige Tage Computersperre (anderea Aufgaben). Selbst habe ich tatsächlich keine Monatstabelle. Das ist aber änderbar und dann ist die Möglichkeit per Join eine gute Lösung. Die Stored-Proc Lösung hat mich schon beeindruckt. Da ich möglichst DB unabhängig arbeiten soll, wird es wohl eine reine Join-Lösungwerden.
Das Problem ist ja übrigens sehr allgemein. Überall wo Vorlagen ausgefüllt werden sollen müssen auch Nullzeilen mit ausgegeben werden.Projekte pro Monat, Umsatz pro Mitarbeiter, neue Artikel pro Filiale... Eigentlich ist es ein sehr allgemeines Problem und ich bedanke mich für die Vorschläge Viele Grüße // Martin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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