sql >> Database teknologi >  >> RDS >> Sqlserver

Omarrangering og deduplikering af SQL-kolonner baseret på kolonnedata

Du kan dele tallene op i individuelle rækker ved hjælp af UNPIVOT, derefter omarrangere dem baseret på forekomsten af ​​'07'-præfikset ved hjælp af ROW_NUMBER(), og til sidst rekombinere det ved hjælp af PIVOT for at ende med 6 Tel kolonner igen.

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. MySQL TIMEDIFF() vs TIMESTAMPDIFF():Hvad er forskellen?

  2. Sådan henter du data ved hjælp af json fra databasen og udfylder den i horisontal listevisning i Android

  3. Understøtter nogen JDBC-drivere LOAD DATA INFILE sql-kommandoen?

  4. LINQ til Java-værktøj