我有一个类似于以下的表结构:
ID |DateUploaded|FamilyCode|
1 |01/01/2010 |FC0001 |
2 |01/01/2011 |FC0001 |
3 |01/01/2012 |FC0001 |
4 |01/08/2012 |FC0002 |
5 |01/01/2012 |FC0002 |
6 |01/08/2012 |FC0002 |
7 |01/01/2012 |FC0002 |
8 |01/08/2012 |FC0003 |
9 |01/07/2012 |FC0003 |
我有一个具有以下ORDER BY的选择:
ORDER BY FamilyCode, DateUploaded desc
这会对结果进行排序,以便将它们有效地分组到族中,并通过DateReceived对族的元素进行排序。现在需要的是家庭按顺序显示,所以最近的DateReceived家庭在最顶层。
有谁知道我怎么做到这一点?
感谢任何建议添加desc的人,我实际上已经得到了这个,但它不希望我追求。
在上表中,我希望将所有结果返回为:
ID |DateUploaded|FamilyCode|
4 |01/08/2012 |FC0002 |
6 |01/07/2012 |FC0002 |
5 |01/01/2012 |FC0002 |
7 |01/01/2012 |FC0002 |
8 |01/08/2012 |FC0003 |
9 |01/07/2012 |FC0003 |
3 |01/01/2012 |FC0001 |
2 |01/01/2011 |FC0001 |
1 |01/01/2010 |FC0001 |
因此,结果将分组为系列,其中最新日期上载的系列位于顶部,而组内的结果按日期排序。
答案 0 :(得分:2)
我怀疑你希望所有家庭在一起,根据最近的日期。为此,您需要添加为每个系列上传的最大日期。这是一种方法:
select FamilyCode, DateUploaded, . . .
from (select t.*,
max(DateUploaded) over (parition by FamilyCode) as maxDateUploaded
from t
) t
order by maxDateUploaded, FamilyCode
请注意,订单仍包含FamilyCode。这很重要,因为多个家庭可能共享相同的最大日期,您仍然希望将这些家庭组合在一起。
答案 1 :(得分:0)
ORDER BY FamilyCode, DateUploaded DESC
答案 2 :(得分:0)
使用desc命令
order by dateuploaded desc,familycode