2014-05-12 164 views
0

我有以下查詢,其中TOTAL_AMOUNT十進制數據類型和INVOICE_NOVARCHAR數據類型。SQL案例聲明

第一個查詢正常工作。但第二個查詢會導致錯誤,如Error converting data type varchar to numeric.

如果我轉換TOTAL_AMOUNTVARCHAR,它排序像爲nvarchar。但我需要排序爲十進制。幫助我得到正確的解決方案。

1)

SELECT * 
FROM TRN_INVOICE 
ORDER BY CASE '1' 
      WHEN '1' THEN TOTAL_AMOUNT 
      WHEN '2' THEN INVOICE_NO 
     END 

2)

SELECT * 
FROM TRN_INVOICE 
ORDER BY CASE '2' 
      WHEN '1' THEN TOTAL_AMOUNT 
      WHEN '2' THEN INVOICE_NO 
     END 
+2

回答了SO次負荷。請搜索! –

回答

0

要在需要多於一個case表達,一個用於每個數據類型不同的數據類型動態地排序:

ORDER BY 
    CASE @sort 
    WHEN '1' THEN TOTAL_AMOUNT 
    END, 
    CASE @sort 
    WHEN '2' THEN INVOICE_NO 
    END 
-2

您的查詢完美地爲我工作,並根據列排序ü給予..如果你可以共享整個查詢,我可以 試試看。

其他你可以嘗試這樣的

SELECT * 
FROM TRN_INVOICE 
ORDER BY CASE '2' 
      WHEN '1' THEN TOTAL_AMOUNT 
      WHEN '2' THEN CAST(INVOICE_NO as decimal) 
     END