Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल सर्वर में तालिका से विभाजित अल्पविराम सेपरेट मूल्य

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या हम बिना किसी अन्य कथन के केस स्टेटमेंट लिख सकते हैं

  2. SQL Server 2008 में एक समग्र विदेशी कुंजी बनाना

  3. एक अद्वितीय पहचानकर्ता कॉलम जोड़ना और नई गाइड उत्पन्न करने के लिए डिफ़ॉल्ट जोड़ना

  4. 4 कारण क्यों आपको अपनी 2020 की योजना में डेटाबेस निगरानी को प्राथमिकता देनी चाहिए

  5. अधिकतम तिथि के आधार पर विशिष्ट रिकॉर्ड कैसे प्राप्त करें?