再帰 CTE といくつかの文字列解析を使用して名前を抽出できます。残りは単なる集計です:
with cte as (
select (case when names like '%,%'
then left(names, charindex(',', names) - 1)
else names
end) as name,
(case when names like '%,%'
then substring(names, charindex(',', names) + 1, len(names))
end) as names
from names
union all
select (case when names like '%,%'
then left(names, charindex(',', names) - 1)
else names
end) as name,
(case when names like '%,%'
then substring(names, charindex(',', names) + 1, len(names))
end)
from cte
where names is not null
)
select name, count(*)
from cte
group by name;
お気づきかもしれませんが、カンマ区切りのリストを SQL Server に保存するのはよくありません。名前ごとに 1 つの行 (およびそれが含まれるリストを説明する他の列) を持つ関連付け/結合テーブルが必要です。