Было бы здорово получить совет по поводу следующей проблемы с данными о производительности робота, которая сводит меня с ума! У нас есть 23 робота на 5 объектах, и данные Spot (места размещения и получения) со всех них собраны в одну большую таблицу. У меня есть две таблицы # Temp2 и # Temp2d следующим образом:
#Temp2
ID Spot LastDiff
76544 21 23
76545 21 0
76546 23 21
76547 23 0
76548 21 35
76549 23 21
76550 21 23
76551 23 21
#Temp2d
IDmin Spot LastDiff
76544 21 23
76546 23 21
76548 21 23
76549 23 21
76550 21 23
76551 23 21
Таблица # Temp2d получена из # Temp2 и записывает отдельные изменения в номере Spot (повторные номера Spot были удалены). (Данные о количестве записей в 90 000 записей разделены на два других столбца, которые не показаны, FacilityName и Robot).
Затем я добавляю новый столбец «LastDiff» в # Temp2 для хранения последнего другого значения Spot, прежде чем оно изменилось. Для обновления столбца LastDiff # Temp2 используется следующий запрос на обновление:
;with cte_1 as
(
select t1.IDmin, t1.spot, t1.lastDiff
from
(
select
IDmin
, spot
, LAG(spot,1,0) OVER(PARTITION BY FacilityName, Robot ORDER BY FacilityName, Robot) AS lastDiff
from #Temp2d
) t1
)
update #Temp2 set #Temp2.lastDiff = cte_1.lastDiff
from cte_1
where #Temp2.ID = cte_1.IDmin
Проблема в том, что в наборе данных строки 90 000 около 30 значений LastDiff в # Temp2 являются неправильными, как показано в строке 76 548 в приведенной выше таблице # Temp2. Похоже, что ошибки не обнаружены, они происходят случайным образом по всему набору данных. Любая помощь в решении этой проблемы была бы очень признательна.