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

कॉलम डेटा के आधार पर SQL कॉलम को पुनर्व्यवस्थित और डुप्लीकेट करना

आप UNPIVOT का उपयोग करके संख्याओं को अलग-अलग पंक्तियों में विभाजित कर सकते हैं, फिर उन्हें ROW_NUMBER() का उपयोग करके '07' उपसर्ग की घटना के आधार पर पुन:व्यवस्थित कर सकते हैं, और अंत में 6 Tel के साथ समाप्त होने के लिए PIVOT का उपयोग करके इसे पुनः संयोजित कर सकते हैं। कॉलम फिर से।

select *
  FROM
  (
    select CustomerID, Col, Tel
      FROM
      (
        select *, Col='Tel' + RIGHT(
               row_number() over (partition by CustomerID
                                  order by case
                                         when Tel like '07%' then 1
                                         else 2
                                         end),10)
         from phonenumbers
         UNPIVOT (Tel for Seq in (Tel1,Tel2,Tel3,Tel4,Tel5,Tel6)) seqs
      ) U
  ) P
  PIVOT (MAX(TEL) for Col IN (Tel1,Tel2,Tel3,Tel4,Tel5,Tel6)) V;

एसक्यूएल फिडल



  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 सर्वर एकाधिक पंक्ति प्रविष्टियों पर काम करने के लिए एक ट्रिगर

  3. SQL सर्वर डेटाबेस सिंक्रनाइज़ेशन समस्याएँ

  4. SQL सर्वर में प्राथमिक कुंजी प्राप्त करने के 11 तरीके (T-SQL उदाहरण)

  5. SQL में अल्पविराम सीमांकित स्ट्रिंग्स की तुलना करें