Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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

Geschrieben

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

Geschrieben

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...