Я переформулирую свой вопрос, как показано ниже:
У меня есть запрос к одной таблице, выполнение которого занимает больше времени, чем обычно. В той же таблице выполняются другие запросы вставки / обновления, но они, похоже, работают нормально. Поэтому я задаю проблему создания запроса, как показано ниже:
столбцы в таблице изначально:
- EmployeeID
- BusUnitID
- SkillID
- Статус
- Тяжесть
- StartDate
- BackgroundStatus
alter table fOSMHistory
add RowID int identity,
FromRowID int,
LastRowID int,
LastStatus varchar(10),
LastSeverity int,ApprLeaveID int;
Найти последний статус цвета перед каждой синей датой окончания:
Update fOSMHistory
set LastStatus = cs.Status,
LastSeverity = cs.Severity
from fOSMHistory cs join fOSMHistory ce -- Colour Start and Colour end
on cs.RowID = ce.LastRowID
join fOSMHistory -- Blue Ends
on fOSMHistory.Status = 'BlueEnd'
and cs.employeeid = fOSMHistory.employeeid
and cs.SkillID = fOSMHistory.SkillID
and fOSMHistory.StartDate between cs.StartDate and ce.StartDate
Пример данных в таблице ниже:
введите описание изображения здесь
Столбцы, которые добавляются изначально, удаляются в конечном запросе, поэтому они не видны в конечных данных.