PDA

View Full Version : "Distinct" in Query



Jutta
24-09-03, 10:20
Vielleicht kann mir her jemand weiterhelfen. Ich bastle schon länger an diesem Problemchen. Und zwar:

möchte ich gerne eine Anzahl Namen bestimmen. Diese Namen kommen aber mehrfach vor, sollen aber nur einmal gezählt werden. Mit STRSQL geht das auch alles wunderbar, da ich dort "distinct" benutzen kann. Nur leider soll es mit WRKQRY (Query/400) gelöst werden. Ich habe bereits diverse Gruppenwechsel, Summen/Anzahlbestimmungen ausprobiert und auch das Handbuch vorwärts und rückwärts gelesen. Irgendwo sehe ich wahrscheinlich den Wald vor lauter Bäumen nicht.

Ist hier zufällig jemand, der mir auf die Sprünge helfen kann ?

Vielen Dank schon mal

Jutta

Fuerchau
24-09-03, 10:28
Mit Query ist dies leider etwas aufwändiger, da DISTINCT nicht unterstützt wird. Du kannst dies nur in 2 Stufen realisieren:

1. Stufe nur Summensätze in eine Zwischendatei ausgeben.
2. Stufe die Zwischendatei dann auswerten

Die bessere Alternative ist auch hier QMQRY:

Dort kannst du den entsprechenden SQL so definieren wie du ihn brauchst. Mittels STRQMQRY wird dieser dann ausgeführt. Hierbei kannst du dann eine Ausgabedatei angeben, diese dann mittels Query formatiert ausgeben oder direkt mit QMFORM (zugegeben nicht ganz so schön) ausgeben.

Jutta
24-09-03, 10:54
Danke für die schnelle Antwort.
Ich habe schon eine Zwischendatei erstellt. Darin stehen jetzt nur die Namen, aber eben auch mehrfach. Das Einzige, was mir noch einfällt - diese Datei verdoppeln und dann durch Verknüpfung auswerten.

Mit QMQUERY krieg ich es auch hin, aber es soll WRKQRY sein, und wenn es 6 Schritte sind.

Nochmals vielen herzlichen Dank trotzdem.

Jutta

Fuerchau
24-09-03, 11:12
Definiere einen Gruppenwechsel und gib bei der Dateiausgabe "Nur Summensätze" an.
Dann bekommst du keine doppelten Sätze mehr.

Jutta
24-09-03, 11:13
Ich habs, aber völlig unschön.

1. Zwischendatei mit den Namen
2. Einlesen dieser Zwischendatei mit Gruppenwechsel auf Name Sortierfelder auswählen auf Name, Art und Form der Ausgabe zweite Zwischendatei mit Summenübersicht
-- jetzt habe ich jeden Namen nur einmal
3. Einlesen dieser zweiten Zwischendatei mit Summenfunktion Anzahl auf Name

Nicht schön - aber Ergebnis ist da.

Fuerchau
24-09-03, 11:16
Du kannst dir einen Schritt sparen, wenn du den 2. und 1. Schritt zusammenfasst.

Nachtrag:

Du kannst auch mit SQL "CREATE VIEW" bereits eine DISTINCT-Sicht erstellen und diese dann mittels Query auswerten => nur 1 Schritt.

Jutta
24-09-03, 11:17
Da haben sich unsere beiden Antworten zeitlich überschnitten, aber
schön, daß wir zur gleichen Lösung gekommen sind.

Danke nochmal für die Hilfe
Jutta