我有一张表,其中包含以下示例数据:
systemuid filename mindatetime maxdatetime
10006 monitor_7.dat 2019-06-05 03:06:18.001 AM 2019-06-06 03:06:11.0 AM
72111 monitor_4.dat 2019-04-28 09:00:00 AM 2019-04-29 11:00:00 AM
10006 monitor_5.dat 2019-04-28 07:00:00 AM 2019-04-28 10:00:00 AM
90204 monitor_7.dat 2019-05-24 03:06:11.001 AM 2019-06-05 03:06:18.0 AM
90204 monitor_4.dat 2019-04-28 09:30:00 AM 2019-04-29 23:00:00 PM
72111 monitor_7.dat 2019-04-21 03:06:26.0 AM 2019-05-21 03:06:10.0 AM
10006 monitor_5.dat 2019-04-28 02:00:00 PM 2019-04-28 06:00:00 PM
72111 monitor_7.dat 2019-05-12 07:00:10.001 AM 2019-05-13 10:00:10.000 AM
90204 monitor_5.dat 2019-04-28 09:00:00 AM 2019-04-28 03:00:00 PM
10006 monitor_7.dat 2019-05-15 09:30:10.001 AM 2019-05-18 11:30:10.000 AM
72111 monitor_4.dat 2019-04-28 07:00:00 AM 2019-04-29 11:00:00 AM
10006 monitor_7.dat 2019-05-21 03:06:10.001 AM 2019-05-24 03:06:11.0 AM
我想通过对systemuid和文件名进行分组来组织数据,然后按mindatetime,maxdatetime进行排序。每个systemuid将具有多个文件名,每个文件名具有多个时间戳。
systemuid filename mindatetime maxdatetime
10006 monitor_5.dat 2019-04-28 07:00:00 AM 2019-04-28 10:00:00 AM
10006 monitor_5.dat 2019-04-28 02:00:00 PM 2019-04-28 06:00:00 PM
10006 monitor_7.dat 2019-05-15 09:30:10.001 AM 2019-05-18 11:30:10.000 AM
10006 monitor_7.dat 2019-05-21 03:06:10.001 AM 2019-05-24 03:06:11.0 AM
10006 monitor_7.dat 2019-06-05 03:06:18.001 AM 2019-06-06 03:06:11.0 AM
72111 monitor_4.dat 2019-04-28 07:00:00 AM 2019-04-29 11:00:00 AM
72111 monitor_4.dat 2019-04-28 09:00:00 AM 2019-04-29 11:00:00 AM
72111 monitor_7.dat 2019-04-21 03:06:26.0 AM 2019-05-21 03:06:10.0 AM
72111 monitor_7.dat 2019-05-12 07:00:10.001 AM 2019-05-13 10:00:10.000 AM
90204 monitor_4.dat 2019-04-28 09:30:00 AM 2019-04-29 23:00:00 PM
90204 monitor_5.dat 2019-04-28 09:00:00 AM 2019-04-28 03:00:00 PM
90204 monitor_7.dat 2019-05-24 03:06:11.001 AM 2019-06-05 03:06:18.0 AM
我需要它作为存储过程的游标。因此需要数据采用这种格式以在记录上执行功能。该表的大小非常庞大,具有数百万条记录。
答案 0 :(得分:0)
只需使用窗口功能:
order by systemuid, filename, mindatetime, maxdatetime
如果您担心大型数据集的性能,请确保在(systemuid, filename, mindatetime, maxdatetime)
上有一个索引。
不管您是否有索引,在数据库中而不是在应用程序中进行排序可能会更快。