2013-02-19 46 views
0

我想排序結果基於類型列。排序似乎沒有產生預期的結果。排序錢數據類型不產生正確的結果

查詢:

SELECT ItemID, ItemName, Total, 
     '$' + replace(convert(varchar,cast(Volume as money),1), '.00','') as Volume, 
    '$' + replace(convert(varchar,cast(Average as money),1), '.00','') as Average, 
     FinalTotal  
FROM @FinalTabVariable 
ORDER BY Average DESC 

感謝

BB

+2

「正常工作」是指什麼?你有什麼樣的價值,他們是如何訂購的,你想如何訂購? – Pondlife 2013-02-19 17:58:34

回答

2

有跡象表明,我看錯了一些東西。

您正在使用Average的別名,它是要排序的列的名稱,因此您實際上正在對varchar值進行排序,而不是money。嘗試使用:

SELECT ItemID, ItemName, Total, 
     '$' + replace(convert(varchar,cast(Volume as money),1), '.00','') as Volume, 
    '$' + replace(convert(varchar,cast(Average as money),1), '.00','') as Avg,  
FROM @FinalTabVariable 
ORDER BY Average DESC 

如果您Averagemoney的話,我不知道爲什麼你在你的查詢中使用cast(Average as money)。在這種情況下,這似乎是不必要的。

+0

在這裏會有一個被激怒的查詢嗎? – Kermit 2013-02-19 18:03:26

+0

@njk我不確定派生表在這種情況下會做什麼。 – Taryn 2013-02-19 18:06:12

+0

至少在MySQL中,您需要一個派生表來對計算字段進行排序。 – Kermit 2013-02-19 18:08:17

相關問題