2012-11-21 197 views
1

我有類似如下的表結構:順序進行排序組

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 | 

所以結果分爲多個系列,與家人在頂部的最新dateuploaded和組內的結果按日期排序。按降序

order by dateuploaded desc,familycode 
+1

DateReceived與DateUploaded相同嗎? –

+0

默認排序順序是升序,所以你可以使用 order by家族代碼,dateUploaded DESC –

+0

已經提出了問題,DateReceived與DateUploaded相同 – Ketchup

回答

2

+0

謝謝,這個工作,非常優雅的解決方案。 – Ketchup

0

使用順序我懷疑你希望所有的家庭一起,根據最近的日期。爲此,您需要添加爲每個家庭上傳的最長日期。這裏有一種方法:

select FamilyCode, DateUploaded, . . . 
from (select t.*, 
      max(DateUploaded) over (parition by FamilyCode) as maxDateUploaded 
     from t 
    ) t 
order by maxDateUploaded, FamilyCode 

請注意,順序依然包括FamilyCode。這很重要,因爲多個家庭可能會有相同的最大日期,並且您仍然希望將這些家庭組合在一起。

相關問題