在談到這個問題:How do I grab only the latest Invoice Number如何分類「A」,「B」,「AA」,「AB」和「AAA」等版本號?
我接受了使用MAX功能的答案,但羅伯特·麥基指出,這將導致在排序的值,例如:
‘A’ ‘AA’ ‘AAA’ ‘AB’ ‘B’
當我需要的是:
‘A’ ‘B’ ‘AA’ ‘AB’ ‘AAA’
我想找到一種方法來查找最新版本的發票。所引用問題的接受答案將起到重要作用。它確實滿足了我的問題......但現在一個新問題值得自己的問題,而不是我回去修改我原來的問題。所以...
我唯一需要處理的是發票號碼本身。 發票號碼格式爲##### XXX,其中#####是實際的發票號碼,XXX是版本號。 XXX可以是從'A'到'ZZZ'的任何地方。
這是我試圖找到解決一個合理的工作(一個sql測試用例):
DECLARE @TempTable TABLE (MyNumber int, MyString varchar(15));
INSERT @TempTable
VALUES (100, 'A'), (100, 'AAZ'), (100, 'B'), (100, 'AZ'), (100, 'C'), (100, 'Z'), (100, 'AA'), (100, 'AB');
SELECT TOP 1
RTRIM(CAST(MyNumber AS NVARCHAR(15)) + MyString) AS InvoiceNumber
FROM @TempTable
ORDER BY RIGHT(LEFT(MyString + SPACE(2), 3), 1) DESC, RIGHT(LEFT(MyString + SPACE(2), 2), 1) DESC, LEFT(MyString, 1) DESC;
有沒有人照顧,提供一個更好的答案或點我在正確的方向清理地雷嗎?
由於提前,
簡單和簡單, 謝謝。 – Randy