对货币数据类型进行排序不会产生正确的结果

时间:2013-02-19 17:56:29

标签: sql-server currency

我正在尝试根据 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 Average,  
       FinalTotal     
FROM @FinalTabVariable
ORDER BY Average DESC

谢谢

BB

1 个答案:

答案 0 :(得分: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

如果您的Average列为money,那么我不确定您在查询中使用cast(Average as money)的原因。在这种情况下,这似乎是不必要的。