2013-10-08 69 views
-1

爲什麼我的排序不工作,因爲它應該?如果我點擊排序我的選擇下的值然後它只排序後的第一個數字,所以如果我有像100,33,2100,4432的價值觀,那麼我得到這個訂單100,2100,33,4432SQL排序錯誤

怎麼可以100小於33等等......

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', '') 
+5

這聽起來像什麼是所謂的詞法排序,並且當您排序包含數字的文本字段時發生。 –

+0

如果比較字符串,則會從左到右比較字符。 1小於3,完成。 –

回答

5

您已將您的值轉換爲您發佈的select語句中的字符串。

所以,做一個字母排序,100也來過33

1

你選前數轉換爲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', '') 
+0

我嘗試過,但它給出了相同的答案。我命名列總=((選擇等... ...之後,我作出了一個秩序合計 – user2210516

+0

嗯,我只是意識到...該替換可能轉換爲字符串。嘗試刪除替換,讓我知道嗎? –

+1

它現在完美了!謝謝! – user2210516