आप UNPIVOT का उपयोग करके संख्याओं को अलग-अलग पंक्तियों में विभाजित कर सकते हैं, फिर उन्हें ROW_NUMBER() का उपयोग करके '07' उपसर्ग की घटना के आधार पर पुन:व्यवस्थित कर सकते हैं, और अंत में 6 Tel
के साथ समाप्त होने के लिए PIVOT का उपयोग करके इसे पुनः संयोजित कर सकते हैं। कॉलम फिर से।
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;