Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Datensätze auswählen, bei denen COUNT eine Bedingung erfüllt

Begonnen von superhit, April 24, 2018, 15:02:53

⏪ vorheriges - nächstes ⏩

superhit

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

ebs17

Daten auswählen mit dem SELECT-Befehl
Aggregate (z.B. Anzahlen) vergleicht man im HAVING-Teil:
...
HAVING COUNT(Auftragsinfos) > 1
...
Mit freundlichem Glück Auf!

Eberhard

superhit

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

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard

superhit

Hallo Eberhard,

jetzt ist der Groschen gefallen (gibt's zwar nicht mehr, gilt aber immer noch...) Vielen Dank!

Grüße, Rainer

Lachtaube

@Rainer,

in Polen gibt's den Groschen noch in Form von Grosz.
Grüße von der (⌒▽⌒)