sql >> データベース >  >> RDS >> Sqlserver

列データに基づく SQL 列の再配置と重複排除

    UNPIVOT を使用して数字を個々の行に分割し、ROW_NUMBER() を使用して '07' プレフィックスの発生に基づいて並べ替え、最後に PIVOT を使用して再結合して 6 Tel にすることができます。

    select * FROM ( select CustomerID, Col, Tel FROM ( select *, Col='Tel' + RIGHT( row_number() over (CustomerID で分割 大文字と小文字を区別する場合 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 フィドル



    1. MySQL/SQLAlchemyのデッドロックを再試行します

    2. Javaを使用してMySQLデータベースをクエリする

    3. SQLServer2008のNVarCharでのUTF-8の保存に問題がある

    4. JavaプログラムからMySQLにデータを保存する最も簡単な方法は何ですか?