Я пытаюсь проверить, соответствует ли XML-документ в sql определенным требованиям.Сравнение дочерних узлов с элементами в XQuery
CREATE TABLE #ValueExample
(
XMLDocument xml
)
INSERT INTO #ValueExample
VALUES ('<History>
<step start="2/22/2015 5:17:55 PM" end="" user="Intake Processor">
<type id="1" value="2" />
<type id="2" value="0" />
<type id="3" value="0" />
<type id="4" value="0" />
</step>
<step start="2015-03-13 10:56:29.980" end="" user="BD Save Followup">
<type id="0" value="5" />
<type id="1" value="4" />
<type id="2" value="3" />
<type id="3" value="0" />
<type id="4" value="0" />
</step>
<step start="2015-02-22 20:08:58.053" end="" user="BD Save Followup">
<type id="0" value="5" />
<type id="1" value="4" />
<type id="2" value="174" />
<type id="3" value="181" />
<type id="4" value="0" />
</step>
</History>')
Мне нужно знать, если этот документ имеет ступенчатый узел, который имеет дочерние элементы типа со значениями атрибутов ID = 2 и значение = 174, также элемент типа с атрибутами типа ид = 3 и значение = 181.
В основном последний узел соответствует моим условиям. вот sql, который я пробовал, а также способ создания теста.
Sql Я пытаюсь
SELECT c.query('.') AS XMLFragment
,c.value('(@id)[1]','int') AS value
,c.query('..') as wholexml
,c.value('(@id)[1]','int') as id
,c.value('(@value)[1]','int') as value
,c.query('(//step/type)[1]') as typeelements
FROM #ValueExample
CROSS APPLY XMLDocument.nodes('//step/type') as t(c)
проблему мне нужно один последний typeelements, сгруппированных по шагам ...
Я надеюсь, что это было достаточно ясно понять. Если вам нужно дополнительное осветление, просто спросите.