Вы можете попробовать это - то, что я не могу сделать, это создать эти "встроенные перечисления"
<Phone1></Phone1>
<City1></City1>
<Phone2></Phone2>
<City2></City2>
Я не знаю способа легко сделать эти последовательно пронумерованные теги XML ...
Все, что я могу сделать, это вывод, который я собираюсь показать в конце:
SELECT
t1.UserName AS 'Account/UserName',
t1.UserHash AS 'Account/Hash',
(SELECT
t2.Phone AS 'Phone',
t2.City AS 'City'
FROM table2 t2
WHERE t2.Rid = t1.Rid
FOR XML PATH(''), TYPE
) AS 'Personal'
FROM
table1 t1
FOR XML PATH('UserDetails'), ROOT('Users')
Это дает мне что-то вроде:
<Users>
<UserDetails>
<Account>
<UserName>xxxxx</UserName>
<Hash>hhhhhhh</Hash>
</Account>
<Personal>
<Phone>.....</Phone>
<City>.....</City>
<Phone>..........</Phone>
<City>.........</City>
</Personal>
</UserDetails>
<UserDetails>
<Account>
<UserName>cccccccccccc</UserName>
<Hash>hhhhhhhhhhhh</Hash>
</Account>
<Personal>
<Phone>................</Phone>
<City>...........</City>
</Personal>
</UserDetails>
</Users>
Конечно, еслиВы можете добавить условие WHERE t1.rid = xxx
к своему внешнему SELECT
, чтобы ограничить пользователя и его извлекаемые данные.