आप एक पुनरावर्ती 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 सर्वर में अल्पविराम सीमांकित सूचियों को संग्रहीत करना एक बुरा विचार है। आपके पास प्रति नाम एक पंक्ति के साथ एक एसोसिएशन/जंक्शन तालिका होनी चाहिए (और उस सूची का वर्णन करने वाले अन्य कॉलम)।