Возможно, это поможет
Select CustName = x1.value('@Name','varchar(150)')
,SubsName = x2.value('@Name','varchar(150)')
,TPID = x2.value('@TPID','varchar(150)')
,PhoneTP = x2.value('TPIDs[1]/Phone[1]/@TP','varchar(150)')
From @XML.nodes('/QueryXMLData/main/*') lv1 (x1)
Cross Apply x1.nodes('*') lvl2 (x2)
Возвращает
CustName SubsName TPID PhoneTP
Michael Ethan 21456 1122334455
Susan Johnathan 110 3344556677
Susan Brad 110 5566778899
Теперь, если ваши данные находятся в таблице ... давайте предположим столбец с именем XMLData
Пример
Select A.ID
,B.*
From YourTable A
Cross Apply (
Select CustName = x1.value('@Name','varchar(150)')
,SubsName = x2.value('@Name','varchar(150)')
,TPID = x2.value('@TPID','varchar(150)')
,PhoneTP = x2.value('TPIDs[1]/Phone[1]/@TP','varchar(150)')
From XMLData.nodes('/QueryXMLData/main/*') lv1 (x1)
Cross Apply x1.nodes('*') lvl2 (x2)
) B