Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zmiana kolejności i deduplikacja kolumn SQL na podstawie danych kolumn

Możesz podzielić liczby na pojedyncze wiersze za pomocą UNPIVOT, a następnie zmienić ich kolejność w oparciu o wystąpienie prefiksu „07” za pomocą ROW_NUMBER(), a na koniec ponownie połączyć je za pomocą PIVOT, aby uzyskać 6 Tel kolumny ponownie.

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;

Skrzypce 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. SYSDATETIME() Przykłady w SQL Server (T-SQL)

  2. Znajdź ostatni wiersz w grupie według zapytania-SQL Server

  3. SQL Server 2008 — Czy wyzwalacz działa z takimi samymi uprawnieniami jak login/użytkownik?

  4. Usuwanie bazy danych SQL Server za pomocą C#

  5. Jak porównać dwa znaczniki czasu jako daty w SQL Server?