Zum Inhalt springen

Wer mag bei Abfrage helfen MSSQL2000


Ricky.G

Empfohlene Beiträge

hallo forum,

ich bräuchte hilfe bei einer abfrage. ich möchte von einer spalte einen wert gezählt zurückbekommen (anzahl) und den wert selber.

folgende geschichte: spalte ist gefüllt mit so etwas:

JKL8736/rhjkw64rjjn/kd938ruu7h

JKL8736/ghnw64urhh/k5kgfs3837h

JKL8736/0rijkkw64uj5j/kd4uurdr37h

IIO8733/ihrtuuw64ujww/kd93837h

IIO8733/0hhtw64ujerh/ghnw64urhh

IIO8733/kd93837h/kd93i87h

AIO8736/ghnw64urhh/ghnw64urhh

AIO8736/0OOhtw64ujerh/kd93i87h

wobei eigentlich nur der erste wert interessiert (bis zum ersten schrägstrich). ich möchte wissen wie oft der erste wert jeweils in der spalte vorkommt.

als rückgabewert quasi die anzahl und der wert.

ANZAHL --- WERT

3 --- JKL8736

3 --- IIO8733

2 --- AIO8736

wer kann mir helfen bei dieser sache?

Link zu diesem Kommentar
Auf anderen Seiten teilen

JKL8736/rhjkw64rjjn/kd938ruu7h

JKL8736/ghnw64urhh/k5kgfs3837h

JKL8736/0rijkkw64uj5j/kd4uurdr37h

IIO8733/ihrtuuw64ujww/kd93837h

IIO8733/0hhtw64ujerh/ghnw64urhh

IIO8733/kd93837h/kd93i87h

AIO8736/ghnw64urhh/ghnw64urhh

AIO8736/0OOhtw64ujerh/kd93i87h

...

ANZAHL --- WERT

3 --- JKL8736

3 --- IIO8733

2 --- AIO8736

Ich unterstelle mal, dass der Wert immer gleich lang ist wie in deinem Beispiel. Dann versuch es mal so: (ungetestet)

select left(spaltenname, 7) as WERT, count(*) as ANZAHL

from tabellenname

group by left(spaltenname, 7)

order by count(*) desc, left(spaltenname, 7) desc

hth

Reinhold

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann arbeite mit Stringfunktionen:

Such nach einer Funktion die das nte Vorkommen eines Zeichens/Strings in einem String sucht (geh einfach mal die Liste der Stringfunktionen durch)

Bestimme die erste Position eines '/'

schneide mit substr(1,<Position>-1) den gewünschten Teil aus

der Rest ist eine normale Aggregation

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann so:

select left(spaltenname

, case when (CHARINDEX ('/', spaltenname ) -1 ) > 0 then

(CHARINDEX ('/', spaltenname ) -1 )

else

0

end )) as WERT, count(*) as ANZAHL

from tabellenname

group by left(spaltenname

, case when (CHARINDEX ('/', spaltenname ) -1 ) > 0 then

(CHARINDEX ('/', spaltenname ) -1 )

else

0

end ))

order by count(*) desc, left(spaltenname

, case when (CHARINDEX ('/', spaltenname ) -1 ) > 0 then

(CHARINDEX ('/', spaltenname ) -1 )

else

0

end )) desc

Auch das wie immer ungetestet und mit heisser Nadel. Falls die Tabelle viele Zeilen hat, solltest du das aber besser über Nacht laufen lassen.

Reinhold

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...