按照两列进行排序和排序。

8 浏览
0 Comments

按照两列进行排序和排序。

我有一个查询返回的结果集如下:

Proj  |  release  |  releaseDt
1     |   2       |  1/2/2013
1     |   1       |  4/5/2012
2     |   1       |  [null]
3     |   1       |  22/2/2013
1     |   3       |  [null]
3     |   2       |  [null]

我需要按releaseDt对其进行排序,但我需要将所有具有相同Proj的记录放在一起。

排序后,结果应该如下所示:

Proj | release |   releaseDt
1    |  2      |   1/2/2013
1    |  1      |   4/5/2012
1    |  3      |   [null]
3    |  1      |   22/2/2013
3    |  2      |   [null]
2    |  1      |   [null]

如何在SQL Server中实现这个?

0
0 Comments

对于一个项目,你想按照最早的发布日期进行排序,然后再按照项目内的发布日期进行排序。

你可以使用窗口函数来获取最早的日期,并将其用于排序:

select t.Proj, t.release, t.releaseDt
from (select t.*, min(releasedt) over (partition by proj) as minrdt
      from t
     ) t
order by t.minrdt, t.proj, t.releaseDt

以上代码首先使用子查询来计算每个项目的最早发布日期,并将结果作为新的列`minrdt`,然后再按照`minrdt`、`proj`和`releaseDt`三列进行排序。

这样做的原因是,通过使用窗口函数,我们可以在每个项目内获取最早的发布日期,并将其与其他项目进行比较。然后,我们可以按照最早日期、项目和发布日期的顺序对结果进行排序。

通过这种方法,我们可以实现按照两个列进行排序的需求。

0
0 Comments

排序和按两列排序的原因是为了按照项目(Proj)和发布日期(releaseDt)对表进行排序。解决方法是使用SQL查询语句SELECT * FROM mytable ORDER BY Proj ASC, releaseDt DESC。这样可以按照Proj升序和releaseDt降序的顺序对表进行排序。

然而,根据问题描述,用户不希望按照Proj排序,而是仅按照最新的发布日期(releaseDt)排序,并保持同一个项目(Proj)的所有行在一起。

为了解决这个问题,可以修改SQL查询语句如下:SELECT * FROM mytable ORDER BY releaseDt DESC, Proj ASC。这样可以先按照最新的发布日期(releaseDt)降序排序,然后再按照Proj升序排序。这样就能够按照最新的发布日期排序,同时保持同一个项目的所有行在一起。

总结起来,解决这个问题的方法是使用SQL查询语句SELECT * FROM mytable ORDER BY releaseDt DESC, Proj ASC,这样可以按照最新的发布日期排序,并保持同一个项目的所有行在一起。

0
0 Comments

问题出现的原因:需要按照两个列进行排序和排序。

解决方法:使用SQL语句中的ORDER BY子句,并在其中指定两个列以及它们的排序顺序。

以下是一个示例代码:

ORDER BY proj ASC, releaseDt DESC

这个代码将按照“proj”列进行升序排序,如果“proj”列的值相同,则按照“releaseDt”列进行降序排序。

以上就是解决这个问题的方法。

0