如何对SQL Server 2008 R2中的多个列进行排序?

如何对SQL Server 2008 R2中的多个列进行排序?,sql,sql-server,sorting,Sql,Sql Server,Sorting,有一个带有order by子句的普通排序,它有多个以逗号分隔的列。但我不是在找那个。请阅读下面的内容 返回的默认结果集按序列列排序。注意序列46和47,它们按顺序排列,具有不同的ReqTag和Rank。我试图将ReqTag列保持在一起,但按顺序和等级进行排序 sequence | Reqtag | Rank -------- | ------ | ------- 42 | PD | 1 43 | PD | 2 46 | MQ | 1 4

有一个带有order by子句的普通排序,它有多个以逗号分隔的列。但我不是在找那个。请阅读下面的内容

返回的默认结果集按序列列排序。注意序列46和47,它们按顺序排列,具有不同的ReqTag和Rank。我试图将ReqTag列保持在一起,但按顺序和等级进行排序

sequence | Reqtag | Rank
-------- | ------ | -------
42       | PD     | 1
43       | PD     | 2
46       | MQ     | 1
46       | SD     | 3
47       | MQ     | 2
47       | SD     | 4
48       | MO     | 1
现在,我希望显示如下所示,其中使用了序列和秩列(期望的结果集)


欢迎提出任何意见。谢谢您的时间。

您可以在排序中使用窗口功能。我想你想要:

order by min(sequence) over (partition by reqtag),
         min(rank) over (partition by reqtag),
         rank

您可以在排序中使用窗口函数。我想你想要:

order by min(sequence) over (partition by reqtag),
         min(rank) over (partition by reqtag),
         rank

如果ReqTag的顺序不重要,只是它们被分组在一起,那么您应该能够将排序更改为以下内容:

SELECT sequence, ReqTag, Rank
FROM [Table]
ORDER BY ReqTag, sequence, Rank

如果ReqTag的顺序不重要,只是它们被分组在一起,那么您应该能够将排序更改为以下内容:

SELECT sequence, ReqTag, Rank
FROM [Table]
ORDER BY ReqTag, sequence, Rank

谢谢你,戈登。成功了。我现在正在努力理解它。@Guppies。您可以运行查询,并将这些列添加到select。这将有助于您理解查询的作用。谢谢您,戈登。成功了。我现在正在努力理解它。@Guppies。您可以运行查询,并将这些列添加到select。这应该有助于您理解查询正在做什么。我真的不明白这个答案为什么不符合OP的要求。我真的不明白这个答案为什么不符合OP的要求。