Если вы уверены, что эти прогоны являются смежными и не перекрываются, вы сможете использовать поле Id, чтобы разбить ваши группы.Найдите поля Id, которые разделены только на 1, и поля, созданные с датой, которые больше некоторого порогового значения.Судя по вашим данным, записи внутри прогона вводятся с интервалом не более минуты друг от друга, поэтому безопасным порогом может быть минута или больше.
Это даст вам время запуска
SELECT mrtB.Id, mrtB.DateCreated
FROM MyReportTable AS mrtA
INNER JOIN MyReportTable AS mrtB
ON (mrtA.Id + 1) = mrtB.Id
WHERE DateDiff(mi, mrtA.DateCreated, mrtB.DateCreated) >= 1
Я назову это DataRunStarts
Теперь вы можете использовать это, чтобы получить информацию о том, где группы начинались и заканчивались
SELECT drsA.Id AS StartID, drsA.DateCreated, Min(drsB.Id) AS ExcludedEndId
FROM DataRunStarts AS drsA, DataRunStarts AS drsB
WHERE (((drsB.Id)>[drsA].[id]))
GROUP BY drsA.Id, drsA.DateCreated
Я назову эти DataRunGroups.Я назвал это последнее поле «Исключено», поскольку его идентификатор просто будет использоваться для определения конечной границы для набора идентификаторов, которые будут извлечены.
Теперь мы можем использовать DataRunGroups и MyReportTable, чтобы получитьcount
SELECT DataRunGroups.StartID, Count(MyReportTable.Id) AS CountOfRecords
FROM DataRunGroups, MyReportTable
WHERE (((MyReportTable.Id)>=[StartId] And (MyReportTable.Id)<[ExcludedEndId]))
GROUP BY DataRunGroups.StartID;
Я назову это DataRunCounts
Теперь мы можем собрать DataRunGroups и DataRunCounts вместе, чтобы получить время начала и число.
SELECT DataRunGroups.DateCreated, DataRunCounts.CountOfRecords
FROM DataRunGroups
INNER JOIN DataRunCounts
ON DataRunGroups.StartID = DataRunCounts.StartID;
В зависимости от ваших настроекВозможно, вам придется сделать все это по одному запросу, но вы поняли идею.Кроме того, самые первые и самые последние запуски не будут включены в это, потому что не будет никакого идентификатора начала, чтобы пройти для самого первого запуска, и никакого идентификатора конца, чтобы пройти для самого последнего запуска.Чтобы включить их, вы должны были бы делать запросы только для этих двух диапазонов и объединять их вместе со старым запросом DataRunGroups для создания новых DataRunGroups.Другие запросы, использующие DataRunGroups, будут работать так же, как описано выше.