在SQL Server中对具有特定值的列进行排序[关闭]

问题描述 投票:0回答:3

我有一列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
asp.net sql-server database ssms
3个回答
2
投票

例如,您可以使用case expression人为地将特定结果放在结果集中的第一位

select *
from tblrepos
order by
  case when [Name] = 'Default Deliverable Submission Notification' then 1 else 0 end desc
  , [Name]

0
投票

您需要一个单独的排序顺序列,因为对名称的排序不会帮助您获得最前面提到的项目。默认情况下,它将按字典顺序排序。

向表中添加一个alternate_sort_order列,为每行分配一个您希望其在排序后所处位置的值,然后使用此查询来获取结果。

select id, name
from tblrepos 
order by alternate_sort_order;

0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.