Ricky.G Geschrieben 30. Mai 2008 Teilen Geschrieben 30. Mai 2008 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 30. Mai 2008 Teilen Geschrieben 30. Mai 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ricky.G Geschrieben 30. Mai 2008 Autor Teilen Geschrieben 30. Mai 2008 hallo Reinhold, vielen dank für deine schnelle antwort. leider sind die ersten werte nicht gleich lang. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jan Jansen Geschrieben 30. Mai 2008 Teilen Geschrieben 30. Mai 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 30. Mai 2008 Teilen Geschrieben 30. Mai 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ricky.G Geschrieben 30. Mai 2008 Autor Teilen Geschrieben 30. Mai 2008 vielen lieben dank euch beiden, ich probiere alles einmal aus. schönes wochenende und vielen dank! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.