Я читаю XML-документ с использованием XQuery в SQL Server. Это мой XML:XML xquery извлекает значение дочерних узлов из строки xml
declare @xml as xml='
<contactdata>
<contacts>
<groupkey>24</groupkey>
<groupname>Test Group One</groupname>
<contact>
<contactkey>100</contactkey>
<contactname>Test Contact One</contactname>
</contact>
<contact>
<contactkey>111</contactkey>
<contactname>Test Contact Two</contactname>
</contact>
</contacts>
<contacts>
<groupkey>26</groupkey>
<groupname>Test Group Two</groupname>
<contact>
<contactkey>101</contactkey>
<contactname>Test Contact Six</contactname>
</contact>
</contacts>
</contactdata>';
Для того, чтобы восстановить каждый контактные данные под каждой группе, я использую этот синтаксис XQuery
select
c.value('(groupkey)[1]','int'),
c.value('(groupname)[1]','nvarchar(max)'),
c.value('(contact/contactkey)[1]','int'),
c.value('(contact/contactname)[1]','nvarchar(max)')
from
@xml.nodes('contactdata/contacts') as Contacts(c)
Но это будет возвращать только первый контакт по каждой группе.
Но мне нужен этот вывод
Пожалуйста, помогите.