на следующем описывает то, что я хочу сделать с этой таблицей Left представляет собой таблицу с которым я хочу caluclate «current_value» для каждого события
Код 1 сбрасывает current_value дорожить
Code 2 добавляют значение current_value
Code3 уменьшает current_value со значениемсо ссылкой на псевдонимы вне подвыборки
Table Events |column to be calculated
eventId deviceId EventCode value |current_value
1 1 1 2 |2
2 1 2 1 |3
3 1 2 1 |4
4 1 2 1 |5
5 1 3 2 |3
6 1 2 2 |5
7 1 1 1 |1
8 1 2 2 |3 code 1: set
9 1 2 1 |4 code 2: add
10 1 2 1 |5 code 3: subtract
11 1 3 3 |2
Мой SQL код выглядит
Select
EventId,
deviceId,
(select last(value) from Events as E where E.EventCode = 1 and E.DeviceID = DeviceID and E.EventId<EventId) AS LastSetValue,
(select last(value) from Events as E where E.EventCode = 1 and E.DeviceID = DeviceID and E.EventId<EventId) AS FromEventID,
(select sum(value) from Events as E where E.EventCode = 2 and E.DeviceID = DeviceID and E.EventId between fromEventId and EventId) AS SumOfAdded,
(select sum(value) from Events as E where E.EventCode = 3 and E.DeviceID = DeviceID and E.EventId betweein FromEventId and EventId) AS SumOfSubtracted,
LastSetValue+SumOfAdded-SumofSubtracted as current_value
from Events;
Этот код, похоже, не работает, потому что в подселективных частях DeviceID выглядит внутренними временными таблицами DeviceID, когда я, как и внешний идентификатор устройства, тоже не работает, потому что он не может быть найден. С EventID также возникает эта проблема.
Любая помощь в том, что здесь неправильно, будет оценена по достоинству.
Вы можете описав (без кода) что означает «текущая стоимость»? –
Current_value - это длина устройства в момент его измерения (eventID привязан к дате или времени). Это набор начального значения плюс добавленные длины, а иногда части сокращаются от устройства. Иногда все устройство заменяется новым, снова начинающимся с нового начального значения. – hbl