Нахождение порядка узлов в XML-документе в SQL Server

Как я могу найти порядок узлов в документе XML?

У меня есть такой документ:

<value code="1">
    <value code="11">
        <value code="111"/>
    </value>
    <value code="12">
        <value code="121">
            <value code="1211"/>
            <value code="1212"/>
        </value>
    </value>
</value>

и я пытаюсь поместить эту вещь в таблицу, определенную как

CREATE TABLE values(
    code int,
    parent_code int,
    ord int
)

Сохранение порядка значений из документа XML (их нельзя упорядочить по их коду). Я хочу быть в состоянии сказать

SELECT code 
FROM values 
WHERE parent_code = 121 
ORDER BY ord

и результаты должны, детерминистически, быть

code
1211
1212

я пытался

SELECT 
    value.value('@code', 'varchar(20)') code, 
    value.value('../@code', 'varchar(20)') parent, 
    value.value('position()', 'int')
FROM @xml.nodes('/root//value') n(value)
ORDER BY code desc

Но он не принимаетposition() функция (& apos;position()& APOS; может использоваться только внутри предиката или селектора XPath).

Я предполагаю, что это возможно каким-то образом, но как?

Ответы на вопрос(6)

Ваш ответ на вопрос