Frage zu einem Access Bericht
Rantanplan
- datenbank
0 Mulder
Hallo!
Ich habe noch nicht viel Erfahrung mit Access und speziell mit Berichten.
Zu aller erst sage ich mal, was ich habe:
Eine Abfrage die mir alle Einträge dieses Monats rausholt.
Diese Abfrage möchte ich jetzt in einem Bericht haben, und im Bericht selbst, möchte ich gerne von der Spalte Umsatz einen Gesamtumsatz haben.
Das heißt es gibt zB 3 Einträge in meiner Abfrage
Firma Umsatz
Fa. Huber 5000
Fa. Mayr 2000
Fa. Müller 7500
Im Bericht möchte ich es gerne so haben:
Fa. Huber Fa. Mayr Fa. Müller Gesamt
5000 2000 7000 14000
----------
Die Gesamtsumme habe ich in der Abfrage nicht errechnet, kann ich mir das im Bericht noch irgendwie errechnen?
Wenn ja, wie geht das?
Bzw. habe ich auch schon das Problem, wenn ich den Bericht so anordnen möchte wie von mir oben beschrieben, ich bekomme nur die Anordung hin, wie von mir ganz oben skizziert.
Wär echt toll, wenn mir jemand einen Tipp geben könnte.
Machts gut und noch ein schönes WE!
Innuendo
Firma Umsatz
Fa. Huber 5000
Fa. Mayr 2000
Fa. Müller 7500
Im Bericht möchte ich es gerne so haben:
Fa. Huber Fa. Mayr Fa. Müller Gesamt
5000 2000 7000 14000
Wenn jemand das gleiche Problem für Oracle löst, wäre ich daran auch sehr interessiert. :-)
(Die Summe am Ende brauch ich nicht.)
Ich hab zwar schon mit
SELECT DECODE(firma,'Huber',umsatz,'') Huber,
DECODE(firma,'Mayr',umsatz,'') Mayr, ...
probiert, aber das liefert immer noch drei Zeilen der Form
Huber Mayr Müller
5000 ---- ----
---- 2000 -----
---- ---- 7000
Hallo Mulder!
Wenn jemand das gleiche Problem für Oracle löst, wäre ich daran auch sehr interessiert. :-)
Ich hab zwar schon mit
SELECT DECODE(firma,'Huber',umsatz,'') Huber,
DECODE(firma,'Mayr',umsatz,'') Mayr, ...
probiert, aber das liefert immer noch drei Zeilen der Form
Huber Mayr Müller
5000 ---- ----
---- 2000 -----
---- ---- 7000
Wenn die Spalten fixiert sind, sollte etwas in der Form funktionieren:
SELECT count(*) AS Dummy,
(SELECT sum(wert) from Umsatz where name="Müller") AS Müller,
(select sum(wert) from Umsatz where name="Huber") AS Huber,
(SELECT sum(wert) from Umsatz where name="Mayr") AS Mayr,
(SELECT sum(wert) from Umsatz) AS Gesamt
FROM Umsatz;
Wenn die Spalten erst zur Laufzeit bekannt werden, sollte die Abfrage dynamisch entstehen.
Für den Bericht - denke ich - kommt man um eine zusätzliche Programmierung dann nicht mehr herum.
In Access funktioniert die Lösung Deines Problems mit einer Kreuztabellenabfrage:
TRANSFORM Sum(Wert) AS X
SELECT null AS Dummy, Sum(Wert) AS Gesamt
FROM Umsatz
GROUP BY null
PIVOT Name;
Ich bin überzeugt, dass es da in Oracle mindestens gleichwertige Lösungen gibt.
Viele Grüße
H-P Ortner
Wenn die Spalten fixiert sind, sollte etwas in der Form funktionieren:
SELECT count(*) AS Dummy,
(SELECT sum(wert) from Umsatz where name="Müller") AS Müller,
(select sum(wert) from Umsatz where name="Huber") AS Huber,
(SELECT sum(wert) from Umsatz where name="Mayr") AS Mayr,
(SELECT sum(wert) from Umsatz) AS Gesamt
FROM Umsatz;
Jo, das klappt für Zahlenwerte. Sorry, ich hätte genauer sein müssen; in meinem Fall stehen in den Spalten Strings:
UserID Frage1 Frage2 Frage3
abcdef blablub ----- -----
abcdef ------ fluppl -----
abcdef ------ ----- schwurbel
H a l l o Mulder!
Wenn die Spalten fixiert sind, sollte etwas in der Form funktionieren:
SELECT count(*) AS Dummy,
(SELECT sum(wert) from Umsatz where name="Müller") AS Müller,
(select sum(wert) from Umsatz where name="Huber") AS Huber,
(SELECT sum(wert) from Umsatz where name="Mayr") AS Mayr,
(SELECT sum(wert) from Umsatz) AS Gesamt
FROM Umsatz;
Jo, das klappt für Zahlenwerte. Sorry, ich hätte genauer sein müssen; in meinem Fall stehen in den Spalten Strings:
UserID Frage1 Frage2 Frage3
abcdef blablub ----- -----
abcdef ------ fluppl -----
abcdef ------ ----- schwurbel
Da würde ich es so lösen:
SELECT UserID as User,
(select max(Antwort) from Befragung B1 where B1.UserID = B.UserID and Frage = 1) as Frage1,
(select max(Antwort) from Befragung B2 where B2.UserID = B.UserID and Frage = 2) as Frage2,
(select max(Antwort) from Befragung B3 where B3.UserID = B.UserID and Frage = 3) as Frage3
FROM Befragung B
GROUP By UserID;
V i e l e G r ü ß e
H-P Ortner