Hallo zusammen,
ich habe eine Tabelle, in denen zu den vorhandenen Aufträgen die Historie der Aufträge abgebildet ist, d.h. zu jedem Auftrag (erkennbar an "Auftragsnummer") existieren in dieser Tabelle n Einträge in einer Spalte "Auftragsinfos". U.a. enthält Auftragsinfos zu jedem Auftrag mindestens 1x einen Eintrag "Zuordnung: ...".
Ich möchte nun die Aufträge zählen, bei denen in "Auftragsinfos" der String "Zuordnung" mehr als 1x vorkommt. Wie lässt sich das mit Hilfe von SQL bewerkstelligen?
Grüße, Rainer
Daten auswählen mit dem SELECT-Befehl (https://www.sql-und-xml.de/sql-tutorial/select-grundbegriff-zur-auswahl-von-daten.html)
Aggregate (z.B. Anzahlen) vergleicht man im HAVING-Teil:
...
HAVING COUNT(Auftragsinfos) > 1
...
Hallo Eberhard,
hmmm...ganz hab' ich es noch nicht verstanden. Die Schwierigkeit scheint mir ja gerade zu sein, dass der COUNT-Befehl eigentlich durch eine WHERE-Clausel gesteuert werden müsste, also sinngemäß:
HAVING COUNT(Auftragsinfos WHERE Auftragsinfos LIKE 'Zurodnung')>1
Geht so etwas?
Grüße, Rainer
Die Mitgabe des Links auf vollständige Syntax war offensichtlich umsonst. Das Lesen des Inhalts hätte diese Frage erübrigt.
SELECT
Auftragsnummer
FROM
TabelleX
WHERE
Auftragsinfos LIKE 'Zuordnung*'
GROUP BY
Auftragsnummer
HAVING
COUNT(*) > 1
Zur Wiederholung: HAVING ist ein WHERE, allerdings auf Aggregate (Summen, Anzahlen, Maxima, Durchschnitte), die über ein Gruppieren erzeugt werden.
Hallo Eberhard,
jetzt ist der Groschen gefallen (gibt's zwar nicht mehr, gilt aber immer noch...) Vielen Dank!
Grüße, Rainer
@Rainer,
in Polen gibt's den Groschen noch in Form von Grosz.