Seite 1 von 1

Auswertung in Abfrage?!

Verfasst: Mi, 23.07.2008 10:33
von Thorn
Hi,

ich habe schon einiges hier durchsucht, aber nicht das passende gefunden (oder ich war zu blöd) ...

Folgende Aufgabe:
In einer Tabelle halte ich die Anwesenheit von Teilnehmern eines 20-tägigen Kurses pro Tag nach ... d.h. wenn der Teilnehmer da ist trage ich "anwesend" ein sonst bleibt das Feld leer ... nun möchte ich nach Abschluss des Kurses auswerten/berechnen wie oft die einzelnen Teilnehmer anwesend waren ... wenn ich es bisher richtig verstanden habe kann ich diese Auswertung in einer Abfrage machen ... mit mathematischen Berechnungen komme ich inzwischen halbwegs klar ... aber jetzt muss ich ja irgendwie prüfen in wievielen Feldern meiner Tabelle (Tag 1, Tag 2, ... Tag 20) der Text "anwesend" steht und das numerisch aufaddieren ...

... kann mich jemand auf die richtige Spur setzen?

EDIT: okay ... ich hab's allein hinbekommen - nicht elegant aber klappt 8)

Re: Auswertung in Abfrage?!

Verfasst: Sa, 26.07.2008 23:46
von komma4
Zeige uns mal Deine Lösung, dann reden wir über Eleganz.

Re: Auswertung in Abfrage?!

Verfasst: Mo, 28.07.2008 08:22
von Thorn
okay ... Abfrage - bearbeiten ... eine freie Spalte nehmen und als "Feld":

( NVL( ASCII( "Day 1" ), 0 ) + NVL( ASCII( "Day 2" ), 0 ) + NVL( ASCII( "Day 3" ), 0 ) + ... NVL( ASCII( "Day 19" ), 0 ) + NVL( ASCII( "Day 20" ), 0 ) ) / 97

eintragen (mit Copy/Paste in der SQL Ansicht geht's schneller), um den Bandwurm später in einen Bericht zu kriegen habe ich ihm einen Alias gegeben ...

ASCII ( character_expression ) ... Returns the ASCII code value of the leftmost character of a character expression. (bei mir "97" für das "a", bzw. irgendwas für ein leeres Feld)
nvl(expr_1, expr_2) ... Returns expr_2 if expr_1 is null and expr_1 otherwise. (da ASCII bei einem leeren Feld keine saubere "0" lieferte, die ich addieren kann bin ich über den NVL gegangen um eine saubere "0" zu bekommen) ...

Ich bin mir ziemlich sicher, dass es einfacher/schneller geht ... wenn es jemand weiss ...