我有一个返回结果集的查询:
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 :(得分:3)
您需要做的就是对表格进行两次排序:首先是Proj
,然后是releaseDt
:
SELECT *
FROM mytable
ORDER BY
Proj ASC,
releaseDt DESC
答案 1 :(得分:3)
尝试
ORDER BY proj ASC, releaseDt DESC
应该做的伎俩!
答案 2 :(得分:1)
您希望按项目的最早发布日期排序,然后按项目中的发布日期排序。
您可以使用窗口函数获取最早的日期,然后使用它进行排序:
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