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;コード> プレ>