SQL Server:创建手动排序顺序

SQL Server:创建手动排序顺序,sql,sql-server,sorting,stored-procedures,Sql,Sql Server,Sorting,Stored Procedures,我使用下面的存储过程从表中获取项,到目前为止,该表工作正常。 有没有办法改变这一点,如果col3等于n/a,那么这些值应该被添加到列表的末尾,其他所有值都会按原样排序? 我想实现N/A值不出现在我的列表中间,因为它们从N.< /P>开始。 如果将sortID 99分配给所有其他项目,则同样的方法也适用,因为所有其他项目都具有较低的数字sortID 我的SP正在工作: 谢谢你的帮助,蒂姆。当然,你可以: ORDER BY CASE col3 WHEN 'n/a' THEN 1 ELSE 0 EN

我使用下面的存储过程从表中获取项,到目前为止,该表工作正常。 有没有办法改变这一点,如果col3等于n/a,那么这些值应该被添加到列表的末尾,其他所有值都会按原样排序? 我想实现N/A值不出现在我的列表中间,因为它们从N.< /P>开始。 如果将sortID 99分配给所有其他项目,则同样的方法也适用,因为所有其他项目都具有较低的数字sortID

我的SP正在工作:

谢谢你的帮助,蒂姆。

当然,你可以:

 ORDER BY CASE col3 WHEN 'n/a' THEN 1 ELSE 0 END,  sortID, col3
CASE表达式将为所有n/a值生成1,为其余值生成0,因此首先按此表达式排序将有效地将所有n/a值放在最后。

当然,您可以执行以下操作:

 ORDER BY CASE col3 WHEN 'n/a' THEN 1 ELSE 0 END,  sortID, col3
ORDER BY 
    CASE WHEN col3 <> 'N/A' THEN Col3 ELSE 'ZZZZZ' END,
         sortID

CASE表达式将为所有n/a值生成1,为其余值生成0,因此首先按此表达式排序将有效地将所有n/a值放在最后。

太完美了-非常感谢!我不知道SQL中存在case语句。太好了-非常感谢!我不知道SQL中存在case语句。
ORDER BY 
    CASE WHEN col3 <> 'N/A' THEN Col3 ELSE 'ZZZZZ' END,
         sortID