Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: fred-neumann am September 14, 2016, 16:50:30

Titel: Zählen nach Kriterien
Beitrag von: fred-neumann am September 14, 2016, 16:50:30
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.

Titel: Re: Zählen nach Kriterien
Beitrag von: DF6GL am September 14, 2016, 19:01:26
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.....
Titel: Re: Zählen nach Kriterien
Beitrag von: fred-neumann am September 14, 2016, 19:07:43
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.
Titel: Re: Zählen nach Kriterien
Beitrag von: fred-neumann am September 14, 2016, 19:17:48
.. 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.
Titel: Re: Zählen nach Kriterien
Beitrag von: Lachtaube am September 15, 2016, 00:29:14
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 (http://sqlfiddle.com/#!15/df05a/6) zeigt in 3 Schritten, den Weg zur Lösung.