Расчет длительности поля разных записей - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь создать вычисляемое поле в базе данных Access, однако мне не удается решить, как лучше всего это сделать.Поле «Длительность» должно быть разницей между двумя значениями «SecsLapsed».Всем этим значениям присваивается «порядок», который представляет собой последовательность данных / наблюдаемых событий, т. Е. 1, 2, 3, 4 и т. Д.

Порядок один всегда будет Secslapsed = 0 (так как этоначало записи) Для следующих записей необходимо рассчитать длительность на основе разницы между значениями, прошедшими через секунду, например, для Order2, duration = Secslapsed (для orde3) - Secslapsed (для order2).Однако значение заказа в уравнении должно быть относительно записи заказа, т.е.Order10 рассчитает разницу между secslapsed для order11 - secslapsed для order10.Есть идеи??

1 Ответ

0 голосов
/ 20 января 2019

Для таблицы Table1 с указанным числовым полем Duration это будет ваш запрос:

Select
  Duration,
  Duration - Nz(
    (Select Top 1 Duration From Table1 As Sub Where Sub.Duration < Table1.Duration Order By duration Desc)
    ,0) As SecsLapsed
From Table1

Если в вашей таблице также есть поле типа Project для разделения таких «пакетов продолжительности», вы можете использовать это:

Select
  Project, Duration,
  Duration - Nz(
    (Select Top 1 Duration From Table1 As Sub Where Sub.Project = Table1.Project And Sub.Duration < Table1.Duration Order By duration Desc)
    ,0) As SecsLapsed
From Table1
Order By Project, Duration
...