Делать группу по заданному набору данных для хранимой процедуры - PullRequest
0 голосов
/ 01 июля 2019

У меня есть таблица с образцами данных, как показано ниже:

  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

Мне нужно это как курсор для моей хранимой процедуры. Поэтому необходимо, чтобы данные были в этом формате, чтобы выполнять функции записи. Размер таблицы довольно велик с миллионами записей.

1 Ответ

0 голосов
/ 01 июля 2019

Просто используйте оконные функции:

order by systemuid, filename, mindatetime, maxdatetime

Если вы обеспокоены производительностью больших наборов данных, убедитесь, что у вас есть индекс для (systemuid, filename, mindatetime, maxdatetime).

Независимо от того, есть у вас индекс или нет, возможно, упорядочение выполняется скорее в базе данных, чем в приложении.

...