如何在sql中设置自定义订单依据

如何在sql中设置自定义订单依据,sql,sql-order-by,substring,customization,Sql,Sql Order By,Substring,Customization,我有以下疑问: select distinct CustomerID, SortOrder, Seq from #result Order By CASE WHEN Substring(SortOrder, 0, 1) = '~' THEN 9999999 else SortOrder END 但是,我收到以下错误消息:如果指定了select DISTINCT,则ORDER BY items必须出现在select列表中 如何以正确的方式创建此自定义订单?请改用分组

我有以下疑问:

select distinct CustomerID, SortOrder, Seq
from #result
Order By CASE 
    WHEN Substring(SortOrder, 0, 1) = '~' THEN 9999999 
    else SortOrder 
    END
但是,我收到以下错误消息:如果指定了select DISTINCT,则ORDER BY items必须出现在select列表中


如何以正确的方式创建此自定义订单?

请改用
分组方式

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

使用
分组依据

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

如果您不介意获得额外的列,那么只需在结果集中包含您的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 

如果您不介意获得额外的列,那么只需在结果集中包含您的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