在SQL Server表中,我有一个XML
列,其中状态发生(首先是最早的,最后一个当前状态)。SQL Server中XML列的反向顺序
我必须编写一个返回状态的存储过程:最新的第一个,最旧的最后一个。
这是我写的:价值
ALTER PROCEDURE [dbo].[GetDeliveryStatus]
@invoiceID nvarchar(255)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @xml xml
SET @xml = (SELECT statusXML
FROM Purchase
WHERE invoiceID = @invoiceID)
SELECT
t.n.value('text()[1]', 'nvarchar(50)') as DeliveryStatus
FROM
@xml.nodes('/statuses/status') as t(n)
ORDER BY
DeliveryStatus DESC
END
例如,在statusXML
列:
<statuses>
<status>A</status>
<status>B</status>
<status>A</status>
<status>B</status>
<status>C</status>
</statuses>
我想程序返回的:
C
B
A
B
A
与ORDER BY .... DESC
它的回报ALPHABETIC逆转(C B B A A
)
我应该如何纠正我的程序?
你需要有东西不仅仅是'status'值更多 - 些时间和日期,一些连续增加'ID'或类似的东西,然后你就可以申请了'ORDER BY :... DESC' ... –
我同意,我也建议至少添加状态更改的日期,但我不是数据库的所有者。任何方式颠倒XML的隐式顺序是我的问题。 –