Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menata ulang dan menghapus duplikasi kolom SQL berdasarkan data kolom

Anda dapat memecah angka menjadi baris individual menggunakan UNPIVOT, lalu menyusun ulang berdasarkan kemunculan awalan '07' menggunakan ROW_NUMBER(), dan akhirnya menggabungkannya kembali menggunakan PIVOT untuk mendapatkan 6 Tel kolom lagi.

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;

SQL Fiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kontrol aliran di T-SQL SP menggunakan IF..ELSE IF - apakah ada cara lain?

  2. Apakah ada perbedaan antara IS NULL dan =NULL

  3. Bagaimana cara membandingkan data antara dua tabel di database yang berbeda menggunakan Sql Server 2008?

  4. Cara Memfilter Objek di SQL Server Management Studio (SSMS) - Tutorial SQL Server / TSQL Bagian 19

  5. Kunci Asing ke beberapa tabel