Sql server Sql排序错误
为什么我的分类不能正常工作?如果我在下面单击对我选择的值进行排序,那么它只在第一个数字之后进行排序,因此如果我有像100,3321004432这样的值,那么我得到的顺序是1002100,334432 100怎么可能比33小,以此类推Sql server Sql排序错误,sql-server,tsql,sorting,Sql Server,Tsql,Sorting,为什么我的分类不能正常工作?如果我在下面单击对我选择的值进行排序,那么它只在第一个数字之后进行排序,因此如果我有像100,3321004432这样的值,那么我得到的顺序是1002100,334432 100怎么可能比33小,以此类推 SELECT Replace( CONVERT(VARCHAR, CONVERT(INTEGER, Sum( Isnull( a.planabsatz_mt1 + a.planabsat
SELECT Replace(
CONVERT(VARCHAR,
CONVERT(INTEGER, Sum(
Isnull(
a.planabsatz_mt1 + a.planabsatz_mt2
+ a.planabsatz_mt3 + a.planabsatz_mt4
+ a.planabsatz_mt5 + a.planabsatz_mt6
+ a.planabsatz_mt7 + a.planabsatz_mt8
+ a.planabsatz_mt9 + a.planabsatz_mt10
+ a.planabsatz_mt11 + a.planabsatz_mt12, 0))), 1),
'.00', '')
您已在发布的select语句中将值转换为字符串
因此,进行alpha排序时,100在33之前。在排序之前,您将数字转换为varchar。试试这个:
SELECT Replace(
CONVERT(INTEGER, Sum(
Isnull(
a.planabsatz_mt1 + a.planabsatz_mt2
+ a.planabsatz_mt3 + a.planabsatz_mt4
+ a.planabsatz_mt5 + a.planabsatz_mt6
+ a.planabsatz_mt7 + a.planabsatz_mt8
+ a.planabsatz_mt9 + a.planabsatz_mt10
+ a.planabsatz_mt11 + a.planabsatz_mt12, 0))),
'.00', '')
这听起来像是所谓的词法排序,在对包含数字的文本字段进行排序时会发生。如果比较字符串,则会从左到右逐个字符进行比较。1比3小,完成了。我试过了,但它给出了相同的答案。我把这个列命名为Total=Select,依此类推……之后,我在TotalHmm上下了一个订单,我才意识到。。。替换可能强制转换为字符串。试着取下替换件并告诉我?