我有一个像下面SQL XML列过滤器基于XML节点聚合函数
<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></x>
<BB><ID>12</ID><BB>
<CC><Type>XML</Type></CC>
</XMLDoc>
我需要获取名称和值节点dateReported的最大XML列。到目前为止,我的SQL是像下面
SELECT
Col1 = Col.value('(/XMLDoc/x/AAA/Name)[1]', 'varchar(255)'),
Col2 = Col.value('(/XMLDoc/x/AAA/Value)[2]', 'varchar(255)'),
Col3 = Col.value('(/XMLDoc/BB/ID)[1]', 'varchar(255)'),
Col4 = Col.value('(/XMLDoc/CC/Type)[1]', 'varchar(255)')
FROM
table t
基本上我需要我的输出是Name_B
,Val_B
,12
,XML
,因为datereported
为AAA具有最大值。
不是一个完整的解决方案,但是如果您使用了格式为yyyy-MM-dd的正确XML日期字符串(即, 2014-12-24)你可以用集合函数的XQuery语法,如max:'select Col.query('max(for $ d in/XMLDoc/AAA/dateReported return xs:date($ d))') FROM [Table]' – 2015-03-02 12:07:48
假设日期字符串的格式正确,你能否给我解决我的解决方案的SQL – Saravanan 2015-03-02 13:00:38