Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Zählen nach Kriterien

Begonnen von fred-neumann, September 14, 2016, 16:50:30

⏪ vorheriges - nächstes ⏩

fred-neumann

Um gewisse Ergebnisse zu erzielen, rufe ich oft noch Excel aus Access heraus auf. Stück für Stück möchte ich aber so manche Berechnung auch in Access umsetzen.
Folgendes:
Ich habe folgendes Abfrageergebnis aus ,,Abfrage1"
Wert
0
1
1
0
0
1
1
1
0
Ich möchte nun mit einer weiteren Abfrage, ,,Abfrage1" ergänzen, mit folgenden Ergebnis:
Wert Zähler
0         0
1         1
1         2
0         0
0         0
1         1
1         2
1         3
0         0

Das Ergebnis von ,,Zähler" ist;
Wenn eine 0 in Wert, dann 0 .... ansonsten zähle die Einser. Unterbricht eine 0 die Reihe in ,,Wert", dann beginne bei der nächsten 1 von vorne.
Ist wohl etwas doof erklärt ...

Im Endeffekt möchte ich aus dieser ,,Zähler-Spalte" später die längste Reihenfolge von 1 ermitteln (das wäre in meinem Beispiel die 3) und den letzten Wert von Zähler (wäre in meinem Beispiel die 0)
Vielleicht noch relevant, es gibt in ,,Abfrage1" kein ID-Feld, allerdings ein Datum.
.. meine Anfrage ist wohl nur über vba lösbar.


DF6GL

Hallo,

das Datums-Feld dürfte sich als wichtig darstellen.


Ansonsten ist das Abfrage-Ergebnis in seiner Reihenfolge unbestimmt und eine Lösung nicht möglich.

Stelle mal die komplette Datensituation dar und beschreibe das erwartete Ergebnis.....
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

fred-neumann

#2
Moin  DF6GL,
also ich habe eine Abfrage, die Werte beinhaltet (entweder 0 oder 1)
Ich will eigentlich die längste Serie (von 1 in Feld  "Wert") in einer weiteren Abfrage feststellen.
Als weiteres möchte ich wissen, ob der letzte Datensatz in "Abfrage1" auch zu einer "Serie" gehört.

fred-neumann

#3
.. ich habe vor 2 Jahren hier schon mal ähnliche Anfrage gestellt,- mir wurde mit folgenden sql - code geholfen;

SELECT A.ID AS SerBeg, B.ID AS SerEnd, B.ID - A.ID + 1 AS SerGroesse
FROM HeimTeam AS A, HeimTeam AS B
WHERE ( A.ID < B.ID )
AND      Not Exists ( SELECT *
                      FROM   HeimTeam
                      WHERE  ( Punkte <> 3
                      AND      ID Between A.ID And B.ID )
                      OR     ( Punkte = 3
                      AND      ID = A.ID - 1 )
                      OR     ( Punkte = 3
                      AND      ID = B.ID + 1 ) )
ORDER BY B.ID - A.ID + 1 DESC;


Hier wird ebenfalls eine Serie festgestellt,- ob "Punkte"=3 vorkommt,- also dreimal in Folge vorkommt.
Ähnliches möchte ich nun wieder,- allerdings die längste Serie.

Lachtaube

Für eine SQL-Lösung wird auf jedenfall eine eindeutige Sortierung benötigt. Ich bin jetzt zu faul, um etwas in Access-SQL zu basteln, wo es doch so schöne und leichte Lösungen mit Window-Funktionen gibt. Der SQLFiddle zeigt in 3 Schritten, den Weg zur Lösung.
Grüße von der (⌒▽⌒)