我在一个非常古老的(13年左右)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 :(得分: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