Bạn có thể trích xuất các tên bằng CTE đệ quy và một số phân tích cú pháp chuỗi. Phần còn lại chỉ là tổng hợp:
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;
Như bạn có thể đã hình dung, lưu trữ danh sách được phân tách bằng dấu phẩy trong SQL Server là một ý tưởng tồi. Bạn nên có một bảng liên kết / nối với một hàng cho mỗi tên (và các cột khác mô tả danh sách trong đó).