robertb
Goto Top

Tabelle auswerten

Guten Tag, guten Abend allen hier,

ich arbeite mit Access 2003, und hoffe mir kann jemand bei dem folgendem Problem eine Hilfestellung geben ?

Ich habe eine Tabelle die in etwa so ausschaut:
Datum LO1 LO2 LO3 LO4 .... bis LO20
01.01.2010 101001 101002 101003 101004 .... ...
02.01.2010 101002 101005 102001 101001 usw.

Nun muss ich prüfen, wie häufig ein LO-Wert (auf alle Tabellenfelder bezogen vorkommt), so das am
Ende eine Auswertung zur Verfügung steht, wie:

101001 = 5
101002 = 3
101003 = 7
usw.

eine normale Auswahlabfrage kommt wohl nicht in Betracht, und das Problem mit einer Case-Anweisung
anzugehen ist definitiv zu unkomfortabel.

Vielen Dank im Voraus
Gruß Robert

Content-Key: 159331

Url: https://administrator.de/contentid/159331

Ausgedruckt am: 29.03.2024 um 10:03 Uhr

Mitglied: Biber
Biber 24.01.2011 um 19:07:36 Uhr
Goto Top
Moin RobertB,

ein klein bisschen mehr zu den Rahmenbedingingen bitte...
  • Anzahl zu erwartende Datensätze - eher 200 oder eher 200000?
  • Brauchst du eher eine Gesamt-Auswertung (alle unterschiedlichen Werte) wenn je - was ist da zu erwarten?
  • oder eine TOP-10/ TOP 50-Liste? Oder nur alle mit Häufigkeit >= 20mal?
  • Die "LOxx"-Felder sind Integer oder sind das Char(6)-Felder oder Text/Varchar?

Grüße
Biber
Mitglied: RobertB
RobertB 24.01.2011 um 19:20:05 Uhr
Goto Top
Hallo Biber und Danke für die schnelle Antwort.
Antwort C2: Nur alle mit Häufigkeit >= 20mal

Die LO-Felder sind Integer-Werte, richtig.


Grüße
Robert
Mitglied: Biber
Biber 24.01.2011 um 19:36:38 Uhr
Goto Top
Moin Robert,

danke für die schnelle Rückmeldung.
Nochmal nachgefasst:
  • Anzahl Datensätze circa?
  • und sind IMMER alle LOxx-Felder gefüllt oder haben auch einige den numerischen Wert 0 oder gar NULL?

Grüße
Biber
Mitglied: RobertB
RobertB 24.01.2011 um 19:40:12 Uhr
Goto Top
Hi Biber,
a) geschätzte Zahl der zu erwartenden Datensätze ca. 100 und monatlich um ca. 10 steigend
b) es sind definitiv alle Felder der Tabelle mit Werten belegt, also keine Nullwerte

Gruß
Robert
Mitglied: Biber
Biber 24.01.2011 um 20:41:21 Uhr
Goto Top
Moin RobertB,

bei den paar Sätzen würde ich dann den kompletten Datenbestand (meinetwegen 500 Zeilen x 21 Felder) copy &pasten und in einer Excel-Pivottabelle visualisieren ggf nach den abgestuften Häufigkeiten farblich gekennzeichnet.

Würd wahrscheinlich mehr hermachen optisch.

Bei Access heisst diese Pivot-Mimik "Kreuztabellen" und ist auch über "Abfragen"-Auswahl mit einem Kreuztabellen-"Assistenten" verbandelt.

Allerdings müsstest du (wenn du über den Assistenten gehen willst) erst einen View...eeehm..eine "Abfrage" vorbereiten, denn du willst ja sicherlich diese Häufigkeit je Zeitraum (je Monat, je Quartal, je Jahrhundert -also über alle Sätze...) berechnen - jedenfalls nicht auf täglicher Basis.
Dazu wäre eine Assi-fütter-Abfrage mit ein paar Month(datum), Year(datum) oder "Q1" für erstes Quartal etc-Felder sinnvoll oder zumindestens nervenschonend.

Spätestens da wäre mir Access & Pivot zu kompliziert und ich würde per Freihand-SQL ein SELECT mit 20 UNIONs zusammenkopieren
Select x.LO , count(x.Lo) as Anzahl From 
   (            Select LO1 as LO from LOTabelle 
    UNION ALL   Select LO2 as LO from LOTabelle 
    UNION ALL   Select LO3 as LO from LOTabelle 
    UNION ALL   Select LO4 as LO from LOTabelle 
....
    UNION ALL   Select LO20 as LO from LOTabelle 
) x
 group by x.LO
having count(LO) >= 20 
order by 2 desc

oder so ähnlich....
Bzw. ich würde es mir in Excel /ooCalc ein bisschen optisch aufbrezeln.

Grüße
Biber
Mitglied: RobertB
RobertB 24.01.2011 um 21:46:11 Uhr
Goto Top
Hi Biber, vielen Dank für Deine Bemühungen.

Es ist mir schon eine grosse Hilfe zu sehen, wie du das Problem angehst, denn ich persönlich hatte immer die Vorstellung eines Arrays, wußte dann aber nicht wie ich das umsetzen kann.
Werde morgen mal den Ansatz mit SQL ausprobieren und dich wissen lasen, ob und wie erfolgreich ich gewesen bin.

Gruß
Robert

PS: Erste Runde geht auf mich face-wink
Mitglied: RobertB
RobertB 25.01.2011 um 07:09:59 Uhr
Goto Top
Moin Forum, moin Biber,

Deine Lösung funktioniert einwandfrei, nochmals Danke.
Habe gestern Abend noch dies und das getestet.

Dabei ist leider der eigentlich undenkbare Fall eingetreten, dass 2 der LO-Werte nun doch LEER sind.
Hast Du (hat jemand) diesbezüglich einen Tipp der mir weiterhelfen könnte ?


Gruß
Robert
Mitglied: Biber
Biber 25.01.2011 um 10:26:05 Uhr
Goto Top
Moin RobertB,

freut mich, wenn es klappt.
Frage: Inwiefern verfälschen denn die "Leer"-Werte dein Ergebnis?
Die ändern doch nichts an der Häufigkeit von anderen Werten - solange du keine "prozentuale Häufigkeit" o.ä. mit berechnest.
Oder sollen alle Datensätze/Tageswerte, die nicht 20 gefüllte LO-Werte haben komplett als "nicht gültig" ausgeklammert werden?

Grüße
Biber
Mitglied: RobertB
RobertB 25.01.2011 um 11:07:23 Uhr
Goto Top
Moin, moin Biber,

die Anzahl der Datensätze differiert natürlich wegen dem Wegfall der leeren Werte.
Zwecks späterer Auswertung und Zuweisung zu einer Access-Tabelle (die eine Auflistung aller LO-Werte) enthält, kann das natürlich kompliziert werden.

Beispiel:
Habe jetzt die LO-Werte:
101001
101002
... (entfällt weil leer)
101004

dann ließe sich das zwecks späterer Auswertung / Weiterverarbeitung nur schwerlich zuweisen.

Ich werde mir auf jeden Fall die Kreuztabellen noch näher betrachten, vielleicht machts denn ja "KLICK"
Falls du mir noch einen Tipp bezüglich der Vorgehensweise machen kannst, wäre ich dir dankbar, ansonsten muß ich mich da wohl durchbeißen.

Gruß
Robert
Mitglied: Biber
Biber 25.01.2011 um 11:24:10 Uhr
Goto Top
Moin RobertB,

nochmal einfacher gefragt: Wenn denn so ein "Leerwert" in deiner Tabelle gelandet ist..
  • Ist dann der ganze Datensatz ungültig (weil nicht vollständig) ?
  • oder reduziert sich dann nur in deiner Betrachtung die Anzahl der Werte von 2000 (100 Sätze mal 20 LO-Spalten) auf 1998 Werte ((abzüglich 2 Leerwerte).?

Handwerklich ist es ob linksrum oder rechtsrum kein Hexenwerk, aber ich kann doch nicht einschätzen, was "fachlich" richtig ist.

Grüße
Biber
Mitglied: RobertB
RobertB 25.01.2011 um 11:44:44 Uhr
Goto Top
Servus Biber,

mir schwirrt momentan ein wenig der Kopf, also entschuldige bitte, wenn ich mich zwischenzeitlich unklar ausgedrückt habe.
Deine Annahme Punkt 2) Reduzierung der Anzahl der Werte ist der springende Punkt

Jetzt stellt sich also doch heraus, dass Leere Werte vorhanden sind und diese aufgrund der Unterbrechung einer eigentlich fest vorgegebenen Reihenfolge dann in der Auflistung fehlen.

Ich danke dir erstmal für deine super Hilfe, aber villeicht muss das Problem anders angegangen werden.
Melde mich für den Fall, dass ich absolut nicht weiterkomme.

Gruß
Robert
Mitglied: Biber
Biber 25.01.2011 um 12:03:49 Uhr
Goto Top
Moin RobertB,

Zitat von @RobertB:
Jetzt stellt sich also doch heraus, dass Leere Werte vorhanden sind und diese
aufgrund der Unterbrechung einer eigentlich fest vorgegebenen Reihenfolge dann in der Auflistung fehlen.
..auch ich liebe dieses Wort "eigentlich" im Kontext von Prozessen und Vorgaben...

Auch so eine Abfrage (welche Werte fehlen in einer aufsteigenden/absteigeden Wertfolge) können wir doch zusammentrümmern.

Nur: was fachlich sinnvoll/gültig/relevant ist, das musst du vorher ausloten.
Ich bin nur der Klempner und klopp das zusammen.

Grüße
Biber
Mitglied: RobertB
RobertB 25.01.2011 um 12:15:49 Uhr
Goto Top
Hi Biber,

kann ich denn dem SQL die komplette Auflistung (vorher definiert oder aus anderer Tabelle) mitgeben, so dass die leeren Werte augenscheinlich werden ?

Beispiel: Die LO-Werte in der Abfrage immer vorhanden
LO-Vorgabe / Auswertung Anzahl
101001 / 101001 5
101002 / 101002 7
101003 / "LEER" (LEER oder NULL)
101004 / 101004 6

Kannst du mir bitte schreiben ob so etwas auch zu realisieren ist, und wenn ja, wie muss ich da ansetzen.


Gruß
Robert

So, bin einen Schritt weiter. Habe jetzt eine Abfrage die die komplette Auflistung mit ausgibt, Wert natürlich "LEER" und bei Anzahl "0".
Tabellenerstellungsabfrage / Anfügeabfrage abgehängt, fertig.

Nochmals riesen Dank an Biber.