在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的隱式順序是我的問題。 –