我有一列Name
。我需要在已排序表的顶部显示Default Deliverable Submission Notification
,然后显示Almoda,配置文件更新等。如何在SQL Server中对其进行排序。
ID | Name
-------------------
253 | Almoda
2607 | Default Deliverable Submission Notification
44 | profile update
2609 | Single Submitted Deliverable
3608 | Single Unsubmitted Deliverable
45 | Test for all Deliverables
这是我使用的查询
select *
from tblrepos
order by Name
例如,您可以使用case expression
人为地将特定结果放在结果集中的第一位
select *
from tblrepos
order by
case when [Name] = 'Default Deliverable Submission Notification' then 1 else 0 end desc
, [Name]
您需要一个单独的排序顺序列,因为对名称的排序不会帮助您获得最前面提到的项目。默认情况下,它将按字典顺序排序。
向表中添加一个alternate_sort_order列,为每行分配一个您希望其在排序后所处位置的值,然后使用此查询来获取结果。
select id, name
from tblrepos
order by alternate_sort_order;
SELECT ID, NAME
FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY CASE WHEN NAME = 'Default Deliverable Submission Notification' THEN '0' ELSE [NAME] END) AS IDA
, *
FROM tblrepos
) A ORDER BY IDA