我在 SQL Server 数据库(SQL Server 2012)中有一个 XML 列,其结构如下:
<history>
<status updatedAt="2013-11-30" active="true" />
<status updatedAt="2013-11-15" active="false" />
<status updatedAt="2012-05-10" active="true" />
<status updatedAt="2012-01-30" active="true" />
</history>
较新的状态将作为顶部节点添加到列中。
我需要选择一个<status>
节点子集,其中包括updatedAt
属性小于或等于给定日期的第一个节点和所有前面的节点(或者,所有<status
> 节点,直到updatedAt
属性小于或等于给定日期)。
如何使用 XPath 实现这一点?
DECLARE @date DATE = '2012-30-10';
SELECT Statuses = Statuses.query('what should be there?')
现在我结束了这个查询:
SELECT Statuses = Statuses.query'((/history/pricing[@updatedAt <= sql:variable("@date")])[1])')
但它只返回第一个节点,我怎样才能包含它之前的所有兄弟姐妹呢?