sql >> Database >  >> RDS >> Sqlserver

Herschikken en ontdubbelen van SQL-kolommen op basis van kolomgegevens

U kunt de getallen opsplitsen in afzonderlijke rijen met UNPIVOT, ze vervolgens opnieuw ordenen op basis van het voorkomen van het voorvoegsel '07' met ROW_NUMBER(), en tenslotte opnieuw combineren met PIVOT om te eindigen met de 6 Tel kolommen weer.

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. Hoe voorkom ik dat een MySQL-decimaalveld wordt afgerond?

  2. SQL, er is een probleem opgetreden bij het verzenden van de opdracht naar het programma

  3. Overwegingen voor prestaties van Azure SQL Managed Instance

  4. Externe mySQL-verbinding kan geen verbinding maken met MySQL 4.1+ met behulp van de oude onveilige authenticatiefout van XAMPP