У меня огромное количество данных с большим количеством столбцов.
- 1-й столбец - Установка.
- 2-ой столбец - Подустановка
- 3-й столбец - дата начала / время неисправности
- 4-й столбец - конечная дата / время неисправности
- 5-й столбец - продолжительность неисправности
Это то, что мне нужно:
Иногда несколько записей должны отображаться как одна запись (хотя бы продолжительность).
Так что это означает, если:
- установка 2 следующих записей одинакова И из тех же записей
- субустановка из 2 следующих записей такая же
- дата / время начала 2-й записи находятся в пределах даты / времени окончания + 5 минут от 1-й записи
эти длительности записи должны быть суммированы.
Может быть, что 2 записи должны быть 1 записью, но также может быть так, что 8 записей подряд должны быть 1 записью.
Ins Sub-In Begin End Dur Tot Dur
x 1 1-1-15 00:00 1-1-15 00:03 3 11
x 1 1-1-15 00:04 1-1-15 00:12 8 11
x 1 1-1-15 00:18 1-1-15 00:22 4 4
z 2 1-1-15 01:00 1-1-15 01:06 6 35
z 2 1-1-15 01:07 1-1-15 01:16 9 35
z 2 1-1-15 01:18 1-1-15 01:38 20 35
z 2 1-1-15 01:45 1-1-15 01:49 4 9
z 2 1-1-15 01:49 1-1-15 01:54 5 9
В приведенном выше примере столбец Tot Dur - это тот, который я хочу реализовать.
Как вы можете видеть, первые 1 записи имеют одинаковые Inst (x) и Sub-Inst (1), а начальная дата / время 2-го числа находятся в пределах конечных данных / времени + 5 минут от 1-й записи.
Поэтому обе длительности добавляются и отображаются для обеих записей в столбце Tot Dur: 11 (3 + 8).
Все записи 4-> 9 имеют одинаковые Inst (z) и Sub-Inst (2), но между записями 6 и 7 начальная и конечная дата / время различаются более чем на 5 минут (01:45 - 01:38 = 7 мин).
Поскольку начальная и конечная дата / время записей 4-> 6 находятся в пределах 5 минут, все они представляют собой 1 запись, и их продолжительность добавляется: 35 (6 + 9 + 20).
Пытался использовать функцию OVER с Intersect, но она не работала.
Я думаю, что решения лежат в этих функциях, но не могу получить правильную формулу.
Если решение может быть достигнуто путем добавления более 1 вычисляемого столбца, это также прекрасно.
ОБНОВЛЕНИЕ ОБНОВЛЕНИЕ ОБНОВЛЕНИЕ ОБНОВЛЕНИЕ
Я сузил это до следующего.
Ins Sub-In Begin End Dur Same Tot Dur
x 1 1-1-15 00:00 1-1-15 00:03 3 8142 11
x 1 1-1-15 00:04 1-1-15 00:12 8 Yes 11
x 1 1-1-15 00:18 1-1-15 00:22 4 No 4
z 2 1-1-15 01:00 1-1-15 01:06 6 9843 35
z 2 1-1-15 01:07 1-1-15 01:16 9 Yes 35
z 2 1-1-15 01:18 1-1-15 01:38 20 Yes 35
z 2 1-1-15 01:45 1-1-15 01:49 4 6542 9
z 2 1-1-15 01:49 1-1-15 01:54 5 Yes 9
Единственное, что теперь должно произойти, - это новая вычисляемая строка, в которой RowId (8142, 9843, 6542) предыдущей строки помещается, если в столбце Same указано yes.
Тогда вычисление Тот Дур легко.
Есть мысли?