2014-09-02 22 views
0

我有以下查詢設置自定義的訂單:如何在SQL

select distinct CustomerID, SortOrder, Seq 
from #result 
Order By CASE 
    WHEN Substring(SortOrder, 0, 1) = '~' THEN 9999999 
    else SortOrder 
    END 

不過,我得到了以下錯誤消息:如果指定SELECT DISTINCT ORDER BY項目必須出現在選擇列表中。

我怎麼能用正確的方式去創建這個自定義的訂單?

回答

3

使用group by代替:

select CustomerID, SortOrder, Seq 
from #result 
group by CustomerID, SortOrder, Seq 
Order By (CASE WHEN Substring(SortOrder, 0, 1) = '~' THEN 9999999 
       else SortOrder 
      END); 
1

如果你不介意的額外列,然後簡單地包括在結果集中你的case語句:

SELECT DISTINCT 
    CustomerID, 
    SortOrder, 
    CASE 
    WHEN Substring(SortOrder, 0, 1) = '~' THEN 9999999 
    ELSE SortOrder 
    END 
FROM 
    #result 
ORDER BY 
    CASE 
    WHEN Substring(SortOrder, 0, 1) = '~' THEN 9999999 
    ELSE SortOrder 
    END