Мне нужно проанализировать XML с многоуровневыми множественными элементами.Анализ многоуровневого XML в SQL Server
Образец XML:
<Studies>
<Study ID="1">
<Site Id="1">
<Participant ID="111"/>
<Participant ID="222"/>
</Site>
<Site Id="2">
<Participant ID="333"/>
<Participant ID="444"/>
</Site>
</Study>
<Study ID="2">
<Site Id="3">
<Participant ID="555"/>
<Participant ID="666"/>
</Site>
<Site Id="4">
<Participant ID="777"/>
<Participant ID="888"/>
</Site>
</Study>
</Studies>
Я попытался:
SELECT
StudyID = XC.value('@ID', 'int'),
SiteId = XC2.value('@Id', 'int'),
ParticipantId = XC3.value('@ID', 'int')
FROM
@Xml.nodes('//Study') AS XT(XC)
CROSS APPLY
xc.nodes('Site') AS XT2(XC2)
CROSS APPLY
xc.nodes('Participant') AS XT3(XC3)
Это не возвращает данные. Если я изменю
xc.nodes('Participant') AS XT3(XC3)
в
xc.nodes('//Participant') AS XT3(XC3)
возвращает 32 строки.
Я ожидаю 8 строк. Любые указатели?
Вам нужно 'CROSS ОТНОСИТЬСЯ xc2.nodes ('участник') AS XT3 (xc3)' (см 'xc2' вместо' xc'!) –