У меня есть таблица SQL Server, которая имеет столбец XML, который имеет данные, как показано ниже. В таблице будет несколько записей. Скажем, таблица T1 и столбец C1.SQL XML Parsing в T-SQL
Наше требование - нам нужно получить последние данные (по максимальному датированному датированному датированному XML узлу XML для отдельных разделов, таких как AAA, BB, CC).
<XMLDoc>
<AAA>
<Name>Name_A</Name>
<Value>Val_A</Value>
<dateReported>1/1/2001</dateReported>
</AAA>
<AAA>
<Name>Name_B</Name>
<Value>Val_B</Value>
<dateReported>1/1/2014</dateReported>
</AAA>
<AAA>
<Name>Name_C</Name>
<Value>Val_C</Value>
<dateReported>1/1/2012</dateReported>
</AAA>
<AAA>
<Name>Name_D</Name>
<Value>Val_D</Value>
<dateReported>1/1/2011</dateReported>
</AAA>
<BB>
<ID>112</ID>
<dateCreated>1/1/2011</dateCreated>
</BB>
<BB>
<ID>121</ID>
<dateCreated>1/1/2012</dateCreated>
</BB>
<BB>
<ID>12</ID>
<dateCreated>1/1/2015</dateCreated>
</BB>
<CC>
<Type>XML</Type>
<dateUpdated>1/1/2015</dateCreated>
</CC>
<CC>
<Type>TXT</Type>
<dateUpdated>3/3/2015</dateUpdated>
</CC>
<CC>
<Type>XLS</Type>
<dateUpdated>2/2/2015</dateUpdated>
</CC>
</XMLDoc>
У меня есть SQL написано ниже
SELECT
ID,
Name = C1.value('(/XMLDoc/AAA/Name)[1]', 'varchar(100)'),
Value = C1.value('(/XMLDoc/AAA/Value)[1]', 'varchar(100)'),
BB_ID = C1.value('(/XMLDoc/BB/ID)[1]', 'int'),
CC_Type = C1.value('(/XMLDoc/CC/Type)[1]', 'varchar(50)')
From T1
Нам нужен результат, как
Id Name, Value, BB_ID, CC_Type
1 Name_B Val_B 12 TXT
нужны ваши входы
извинения в следующий раз позаботятся об этом. Ваш результат не соответствует .. Мне нужны узлы данных для максимального значения даты, тогда как запрос дает только максимальное значение даты – Saravanan
@Saravanan: обновил мой ответ - попробуйте еще раз –
Спасибо, но этот запрос дает 3 строки, я хочу, чтобы результат был как один имя строки, значение, BB_ID, CC_Type 1 Name_B Val_B 12 TXT – Saravanan