MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > SQL
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 17.07.2001, 19:25   #1
MarioR
MOF Meister
MOF Meister
Standard Summierung

Hallo SQLer,

die Frage hab ich zwar schon im Access-Forum gestellt, aber vielleicht könnt ihr mir auch weiterhelfen.

Ich hab eine Datenquelle "Anrufe_2", die folgende Daten enthält:

Zeit SWert
12:01 1
12:32 1
12:45 1
12:53 -1
13:03 1
...

Jetzt möchte ich eine laufende Summe für SWert über alle Datensätze bilden. Dafür hat mir Access diesen SQL-String erstellt:
Code:

SELECT Anrufe_2.Zeit, Sum(Anrufe_2.SWert) AS [Summe von SWert]
FROM Anrufe_2
GROUP BY Anrufe_2.Zeit;
Dummerweise summiert Access nur innerhalb einer Gruppe. Also erhalte ich wieder die Quelldaten. Ich hätte das Ergebnis aber gern so:

Zeit [Summe von SWert]
12:01 1
12:32 2
12:45 3
12:53 2
13:03 3
...

Geht das irgendwie oder muss ich nach einer anderen Lösung suchen? Hat jemand eine Idee?

__________________

Mario

Fluchen ist die einzige Sprache, die alle Programmierer perfekt beherrschen.
MarioR ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.07.2001, 15:39   #2
Joachim Hofmann
MOF Koryphäe
MOF Koryphäe
Standard

Hallo MarioR,

praktisch wäre es, wenn Du kurz gesagt hättest, was die anderen denn Dir schon geraten haben, oder ob es denn schon geht, nur Du möchtest es besser oder.....

Nun weiß ich z.B. nicht ob man schon geklärt hat, das es wahrscheinlich per Bericht lösbar ist..

Mit reinem SQL geht es auf *einen Schlag* nicht.
*Jede einzelne* Summe läßt sich mit (ich schreibe hier nur das Prinzip auf, ohne Access-Funktionen/Formate):


SELECT Sum(Anrufe_2.SWert) AS SummeSWert
FROM Anrufe_2
WHERE (((Anrufe_2.Zeit)<= #HIER DIE GEW. ZEIT (die der betr. Zeile) EINTRAGEN# ))

ermitteln.

Falls Du weißt, wie man mit Recordsets in Access arbeitet, sage ja, dann könnte ich vom Prinzip her sagen, wie man es mit Recordset & UPDATE machen könnte.

__________________

Gruß edited with vim
Joachim
Joachim Hofmann ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.07.2001, 16:28   #3
MarioR
Threadstarter Threadstarter
MOF Meister
MOF Meister
Standard

Hallo Achim,

Asche auf mein Haupt, hier ist der Link zu meinem Access-Beitrag:
Summierung in Abfragen

Ich hab schon versucht, die Sache mit DSum bzw. einer Variablen in den Griff zu bekommen. Aber das eine dauert ziemlich lange und das andere bringt unklare Ergebnisse.

Mit Recordset beweg ich mich noch auf etwas wackligen Füssen, aber ich würde gern Deine Idee hören. Vielleicht kann ich's irgendwie umsetzen.
Ist es eigentlich möglich eine Art "Unterabfragen" zu erstellen, die mir die Summen liefern (und womöglich schneller als DSum sind)?

Danke für Deine Hilfe

Moderatorenanmerkung: Überarbeitung, durch den Wechsel der Forensoftware zum 01.01.2003 verursacht: in diesem Beitrag Link(s) korrigiert.
jinx – 19.07.2003

__________________

Mario

Fluchen ist die einzige Sprache, die alle Programmierer perfekt beherrschen.
MarioR ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.07.2001, 17:49   #4
Joachim Hofmann
MOF Koryphäe
MOF Koryphäe
Standard

hm, ich habe es mal mit UPDATE und SELECT in einer einzigen Aktualisierungsabfrage ausprobiert, aber das frißt Access nicht. Ich arbeite mehr direkt auf einem SQL Server, da geht sowas.

Leider habe ich keine Zeit, weiteres in Access auszuprobieren.
*Meine* Idee wäre, eine neue Spalte "lSumme" für die Summierungen zu erstellen und diese Felder "auf Knopfdruck" zu aktualisieren.

Irgendwie wird das gehen, wenn man einen Recordset aufmacht, diesen über alle Zeilen laufen läßt und ein Recordset-Update für jede einzelne Zeile macht, indem man den Ausdruck "Summe aller Werte bis zum aktuellen SWert" errechnet (SWert kommt dann aus dem RecordSet und entspräche der Variable #HIER DIE GEW. ZEIT (die der betr. Zeile) EINTRAGEN# in meinem letzten Beitrag) und dann das aktuelle Feld "lSumme" "Recordset-Updated".
Habe nur leider keine Zeit, das umzusetzen.

__________________

Gruß edited with vim
Joachim
Joachim Hofmann ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.07.2001, 09:49   #5
joro
Neuer Benutzer
Neuer Benutzer
Standard

Hallo MarioR,
mit zwei Abfragen funktioniert es. In der ersten erzeugst du eine Hilfstabelle (tab2) mit einer Spalte, in die du die Zeit-Einträge aus deiner Tabelle (tab1)kopierst.

Die zweite Abfrage lautet dann:

SELECT Sum(tab1.Wert), tab2.zeit
FROM tab1 RIGHT OUTER JOIN tab2 ON tab1.zeit <= tab2.zeit
GROUP BY tab2.zeit;

joro ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.07.2001, 18:56   #6
MarioR
Threadstarter Threadstarter
MOF Meister
MOF Meister
Ärger

Hallo,

danke erstmal für Deine Antwort.

Leider ist das Zeitverhalten ähnlich schlecht wie mit den anderen Lösungen mit Sum oder DSum.
Ich habe in der Zwischenzeit den Gedanken mit der Funktion nochmal aufgegriffen (Beitrag Access-Forum) und lasse das Ergebnis in eine Tabelle schreiben. Damit ändern sich die Werte beim Blättern nicht mehr und mit der Geschwindigkeit bin ich auch zufrieden.

__________________

Mario

Fluchen ist die einzige Sprache, die alle Programmierer perfekt beherrschen.
MarioR ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.07.2001, 11:47   #7
C. Palmetshofer
MOF User
MOF User
Standard

Code:

SELECT a.BUNr, Sum(b.Preis) AS SummePreis
FROM Buchungen as a, Buchungen as b
where b.BUNr <= a.BUNr
GROUP BY a.BUNr;
Gruss

__________________

C. Palmetshofer
C. Palmetshofer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.07.2001, 17:36   #8
MarioR
Threadstarter Threadstarter
MOF Meister
MOF Meister
Standard

Hallo Christoph,

danke für Deine Bemühungen. Leider wieder das gleiche Problem: die Zeit

Langsam gewinne ich den Eindruck, dass Sum für dieses Problem wirklich zu langsam ist. Es werden ja jedes Mal wieder alle vorhergehenden DS summiert! Und ich hab's nur mit rund 2000 DS probiert, das Programm wird auf etwa die 100fache Datenmenge losgelassen!

__________________

Mario

Fluchen ist die einzige Sprache, die alle Programmierer perfekt beherrschen.
MarioR ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.