Entwickler-Ecke
Datenbanken - SQL, Paradox-Datenbank: Auswerten und Rechnen
Zemke - So 10.11.02 19:28
Titel: SQL, Paradox-Datenbank: Auswerten und Rechnen
Hallo,
ich möchte gerne zu statistischen Zwecken Daten aus meiner Paradox-Datenbank auswerten. Bei dieser Auswertung sollen Summen gebildet werden können.
Konkret:
Ich habe Datumswerte (6 Felder) und Betragswerte (6 Felder) in meiner Datenbank. Die Datumsfelder habe ich wiederum in je 6 Felder nur Datum und nur Monat aufgesplittet (um einen besseren Zugriff auf Datumswerte zu bekommen - Vergleichswerte). Pro Datensatz können mehrere Datumswerte und Betragswerte gespeichert werden. Nun möchte ich eine Auswertung nach Monaten machen. Die Daten sollen nach Anzahl / Monat und Gesamtbetrag / Monat ausgewertet werden. Ich habe nun viele unterschiedliche Methoden ausprobiert, ich komme immer wieder zu unterschiedlichen Ergebnissen. z.B.
select count(monat)+count(monat2)+count(monat..), sum(betrag1)+sum(betrag2)+sum(betrag..) from datenbank.db where jahr='2002' and monat='1' union select count(monat)+count(monat2)+count(monat..), sum(betrag1)+sum(betrag2)+sum(betrag..) from datenbank.db where jahr='2002' and monat='2'
... bis Monat 12
Kann man diese Abfrage nicht irgendwie zusammenfassen und wie bekomme ich sie (dann mit variablen) in die SQL?
Meine Datenbank sieht in etwa so aus:
2002 1 15.01.2002 500,00
Jahr Monat | Datum Betrag Jahr Monat | Datum2 Betrag2
Jahr Monat | Datum3 Betrag3 Jahr Monat | Datum4 Betrag4
Jahr Monat | Datum5 Betrag5 Jahr Monat | Datum6 Betrag6
6 Eingabefelder pro Datensatz, in jedem Monat kann der Wert 1-12 auftauchen. Die Daten sollen aus dieser Tabelle zusammengefasst werden.
Ich hoffe ihr steigt da durch.
Ich wäre sehr froh, wenn mir jemand helfen könnte.
Gruß
Rainer Zemke
Steffer - So 10.11.02 22:29
Was soll denn dabei rauskommen?
>select count(monat)+count(monat2)+count(monat..), sum(betrag1)+sum
>(betrag2)+sum(betrag..) from datenbank.db where jahr='2002' and
>monat='1' union select count(monat)+count(monat2)+count(monat..),
>sum(betrag1)+sum(betrag2)+sum(betrag..) from datenbank.db where
>jahr='2002' and monat='2'
>... bis Monat 12
Eine Summe der Beiträge, Anzahl der Beiträge?*g
Nee, du must die Anfragen nacheinander ausführen.
Also erst Count() dann Sum() usw.. du hast doch auch nur immer EINEN Wert als Ergebnis.
Wenn die DB dazuentsprechend indiziert ist, geht das ohne Probleme.
Zemke - Mo 11.11.02 10:25
Titel: Ergebnis
Als Ergebnis möchte ich genaue Aufstellung über Anzahl der Rechnungen pro Monat mit dem Gesamtbetrag pro Monat:
Monat Menge Gesamtbetrag
Januar
Februar
März
Apil
Mai
Juni
Juli
August
September
Oktober
November
Dezember
"Du musst die Anfragen nacheinander ausführen" ?
nacheinander in einem Befehl oder für jeden Monat extra - wenn in einem Befehl, wie verbinde ich die Daten so, daß daraus Summen herauskommen?
LCS - Mo 11.11.02 13:17
Hi
| Zemke hat folgendes geschrieben: |
2002 1 15.01.2002 500,00
Jahr Monat | Datum Betrag Jahr Monat | Datum2 Betrag2
Jahr Monat | Datum3 Betrag3 Jahr Monat | Datum4 Betrag4
Jahr Monat | Datum5 Betrag5 Jahr Monat | Datum6 Betrag6
|
Verstehe ich das richtig, dass du pro Datensatz 6 x die Felder Jahr, Monat, Datum und Betrag hast? :shock:
Wenn das so ist, wirst du das nie vernünftig hinbekommen. Zumindest nicht mit SQL. Leider hast du hier geben eine der Grundregeln beim DB-Design verstossen: Sich wiederholende Daten gehören in eine eigene Tabelle.
Wenn du in jedem Satz nur eine Wertegruppe hättest, könntest du das einfach so machen:
Quelltext
1:
| select count(*), sum(betrag) from Datenbank where Jahr = 2002 group by Monat |
Dann würdest du 12 Datensätze für die Monate 1 bis 12 bekommen. Jeweils mit Anzahl und Gesamtsumme.
Gruss Lothar
Zemke - So 17.11.02 12:48
Titel: Selektierung
Hallo,
vielen Dank für den Hinweis, es hat geklappt.
Gruß
Rainer Zemke
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!