[英]Getting a max value from a node of XML in SQL Server 2008
我有一些这样的xml
<variable>
<historicDates>
<item>
<date>2012/01/13</date>
<type>submitted</type>
</item>
<item>
<date>2012/01/12</date>
<type>required</type>
</item>
<item>
<date>2012/01/11</date>
<type>required</type>
</item>
</historicDates>
</variable>
我正在尝试编写一条sql语句以获取类型等于要求的最大日期。 为了解决这个问题,我将该列设置为nvarchar(max),所以我知道即使在开始之前也必须将其强制转换为xml。
我试图弄清楚交叉应用程序,但无法正常工作。 任何帮助,将不胜感激。
假设您的XML位于名为@xml
的变量中:
SELECT MAX(t.ItemDate)
FROM (SELECT Tbl.Col.value('date[1]', 'datetime') AS ItemDate,
Tbl.Col.value('type[1]', 'varchar(20)') AS ItemType
FROM @xml.nodes('//variable/historicDates/item') Tbl(Col)) t
WHERE t.ItemType = 'required'
由于您指定了SQL Server 2008,因此您还可以在此处使用CTE:
WITH cteXMLtoTable AS (
SELECT Tbl.Col.value('date[1]', 'datetime') as ItemDate,
Tbl.Col.value('type[1]', 'varchar(20)') as ItemType
FROM @xml.nodes('//variable/historicDates/item') Tbl(Col)
)
SELECT MAX(ItemDate)
FROM cteXMLtoTable
WHERE ItemType = 'required'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.