2016-10-09 1 views
1

Я работаю в SQL Server 2014 и пытаюсь создать столбец для хранения интервала между вставками SQL. Как я могу это сделать? Я вставляю значения силы тока из нескольких датчиков с одной инструкцией вставки. Я хотел бы, чтобы стол выглядел как прикрепленная фотография.SQL Server 2014 Как хранить временные интервалы между вставками

Amperage table

+0

Ваши данные не имеют смысла. Откуда взялось 14? Что случилось с использованием столбца «timestamp»? –

+0

Извините. 14 - количество секунд между каждой вставкой. Это произвольное число. –

+0

Я загрузил лучшее изображение с правильными вторыми интервалами. –

ответ

1

Просто используйте lag() для расчета этого, когда вам это нужно:

select t.*, 
     datediff(second, lag(timestamp) over (order by timestamp), timestamp 
       ) as diff_in_seconds 
from t; 

Вам не нужно делать это при создании таблицы.

+0

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

+0

@JaySettle у вас есть индекс на TimeStamp? – qxg

+0

Я этого не делаю. Я попробую это. –

0

Вы можете использовать следующие

  1. Добавить новое поле, называемое внутренним по отношению к таблице и сделать запрос на обновление, чтобы обновить это поле «Интервал»
  2. Для новых записей выполните следующие действия
    • Найдите последняя вставленная запись top(1) and order by timestamp desc
    • Включить новую запись с установкой значения Iterval = now - lastinserted.TimeStamp

это решение будет стоить времени на обновление существующих записей, но при вставке, вы запрашивая дб, чтобы получить последний вставлен, то вы посылаете к БД данным обновленных, но это решение будет лучше на данные, которые превышают 100 тыс. записей

Надеюсь, это вам поможет

+0

спасибо, мне это нравится. Вы предлагаете хранимую процедуру, которая запускается на каждой вставке? Это может сработать, но я заинтересован в масштабировании ... хранимой процедуры, которая должна найти отметку времени «max» для этого датчика, которая фактически является соединением с другой таблицей датчиков. Если у меня есть тысячи микроконтроллеров с несколькими датчиками с тысячами записей, это займет больше времени, чем больше записей, которые он должен выполнить для поиска? –

+0

вам не нужно найти max, вы получите последнюю вставленную запись, так как она будет удерживать максимальную временную метку – Monah

Смежные вопросы