Jede Option außer Cursor in dieser Art von Gruppe durch?

Ich habe eine Beispieldaten wie:

Johnson; Michael, Surendir;Mishra, Mohan; Ram Johnson; Michael R. Mohan; Anaha Jordan; Michael Maru; Tushar 

Die Ausgabe der Abfrage sollte sein:

 Johnson; Michael 2 Mohan; Anaha 1 Michael; Jordon 1 Maru; Tushar 1 Surendir;Mishra 1 Mohan; Ram 1 

Wie Sie sehen können, ist es die Anzahl der einzelnen Namen getrennt, aber mit einem Twist. Wir können nicht einfach eine Gruppe durch den vollen Namen machen, denn manchmal kann der Name den mittleren Namen 1. Anfang enthalten und manchmal auch nicht. Z.B. Johnson; Michael Johnson; Michael und Johnson; Michael R. Johnson; Michael R. werden als ein einziger Name gezählt und daher ist ihre Zählung 2. Weiter entweder Johnson; Michael Johnson; Michael sollte erscheinen oder Johnson; Michael R. Johnson; Michael R. sollte in Resultate mit Zählung von 2 erscheinen (nicht beide, weil das wiederholt werden würde)

Die Tabelle enthält Namen, die durch getrennt sind, und es ist nicht möglich, sie zu entleeren, wie es LIVE ist und uns von jemand anderem gegeben wird.

Gibt es sowieso eine Abfrage dafür ohne Cursor zu schreiben? Ich habe etwa 3 Millionen Platten in meiner DB und ich muss auch Paginierung etc. unterstützen. Was denkst du wäre der beste path, dies zu erreichen?

   

Aus diesem Grund sollten Ihre data normalisiert werden.

 ;with cte as ( select 1 as Item, 1 as Start, CHARINDEX(',',People+',' , 1) as Split, People+',' as People from YourHorribleTable union all select cte.Item+1, cte.Split+1, nullif(CHARINDEX(',',people, cte.Split+1),0), People as Split from cte where cte.Split<>0 ) select Person, COUNT(*) from ( select case when nullif(charindex (' ', person, 2+nullif(CHARINDEX(';', person),0)),0) is null then person else substring(person,1,charindex (' ', person, 2+nullif(CHARINDEX(';', person),0))) end as Person from ( select LTRIM(RTRIM( SUBSTRING(people, start,isnull(split,len(People)+1)-start))) as person from cte ) v where person<>'' ) v group by Person order by COUNT(*) desc