Учитывая следующую структуру таблицы, которая представляет собой маршрут автобуса, где пассажиры садятся на автобус с датчиком двери. И есть человек, который сидит на этом автобусе с буфером обмена, держащим подсчет очков.
CREATE TABLE BusLoad(
ROUTE CHAR(4) NOT NULL,
StopNumber INT NOT NULL,
ONS INT,
OFFS INT,
SPOT_CHECK INT)
go
INSERT BusLoad VALUES('AAAA', 1, 5, 0, null)
INSERT BusLoad VALUES('AAAA', 2, 0, 0, null)
INSERT BusLoad VALUES('AAAA', 3, 2, 1, null)
INSERT BusLoad VALUES('AAAA', 4, 6, 3, 8)
INSERT BusLoad VALUES('AAAA', 5, 1, 0, null)
INSERT BusLoad VALUES('AAAA', 6, 0, 1, 7)
INSERT BusLoad VALUES('AAAA', 7, 0, 3, null)
Я хочу добавить столбец "LOAD" в эту таблицу, который вычисляет нагрузку на каждой остановке.
Загрузка = предыдущие остановки нагрузки + остановка тока ONS - остановка тока OFFS if SPOT_CHECK имеет значение null, иначе LOAD = SPOT_CHECK
Ожидаемые результаты:
ROUTE StopNumber ONS OFFS SPOT_CHECK LOAD
AAAA 1 5 0 NULL 5
AAAA 2 0 0 NULL 5
AAAA 3 2 1 NULL 6
AAAA 4 6 3 8 8
AAAA 5 1 0 NULL 9
AAAA 6 0 1 7 7
AAAA 7 0 3 NULL 4
Я могу сделать это с помощью курсора, но есть ли способ сделать это с помощью запроса?