2014-03-06 58 views
0

我在一個非常陳舊(13年左右)的SQL數據庫程序中對數據分組進行排序時遇到了問題。數據是這樣的:SQL高級分類

Entry  Batch Time 
    1   1  7-1-2013 13:35 
    2   1  3-3-2014 7:48 
    3   1  1-2-2014 18:49 
    4   2  3-1-2011 13:23 
    5   2  5-3-2014 20:48 
    6   2  7-2-2014 3:11 
    7   3  2-3-2012 15:09 
    8   3  5-3-2014 10:37 
    9   3  6-2-2014 7:16 

我想通過分組是從同一批次一起,條目進行排序,然後根據這些組中最低的時間條目排序。在這個例子中,團體訂單爲2-3-1,入場訂單爲4-6-5-9-7-8-1-3-2

有沒有簡單的方法來做到這一點?我嘗試通過(選擇等等)的順序工作,但迄今爲止沒有成功。任何幫助將不勝感激:)

+0

的程序被稱爲QRDesign Barcovision。剛剛檢查,它有一個2009年的更新,也許它不是那麼糟糕......不知道該回答什麼 –

回答

1

如果我正確閱讀,你想按組中的最早日期,然後按時間排序。

如果這是Oracle或SQL Server,你可以使用分析此:

select Entry, 
     Batch, 
     Time 
from (select Entry, 
       Batch, 
       Time, 
       MIN(Time) OVER (PARTITION BY Batch) AS MinTime 
     from MyTable) MyTable2 
order by MinTime, Time 

如果沒有支持此功能的數據庫,你可以嘗試以下方法:

select MyTable.Entry, 
     MyTable.Batch, 
     MyTable.Time 
from MyTable 
join (select Batch, MIN(Time) AS MinTime 
     from MyTable) MyTable2 on MyTable.Batch = MyTable2.Batch 
order by MyTable2.MinTime, MyTable.Time 
+0

問題似乎是他想以非自然的方式訂購批次(即不是上升也沒有下降) –

+0

@ThorstenDittmar如果您在每個批次和訂單上選擇最低時間,那麼批量訂單爲2-3-1 – Sam

+0

啊,沒有注意到。好吧,似乎那我的答案也是無效的;-) –