Я бы предложил сначала нормализовать ваш стол. Я думаю, что будет лучше, если ticket_details будет на одном столе, а ticket_states будет на другом.
ticket_details (PK TicketNumber, other_details)
ticket_state (PK TicketNumber, PK DateCreated, DateUpdated, State)
Таким образом, определенный билет может иметь столько состояний, сколько необходимо. Что касается изменения состояния, вы можете вставить новую запись в ticket_states с тем же TicketNumber, и DateCreated новой записи будет DateUpdated предыдущей записи.
Для запроса на получение общего времени, в котором он находится в заданном состоянии, например «Ожидание пользователя», вы, вероятно, можете сделать что-то вроде этого:
SELECT TicketNumber, State, SUM(DateDiff)
FROM
(SELECT ticket_details.TicketNumber, ticket_state.State, DATEDIFF(DateUpdated,DateCreated) AS DateDiff FROM ticket_details
LEFT JOIN ticket_state
ON ticket_details.TicketNumber = ticket_state.TicketNumber) TableDetailState
WHERE State = 'Awaiting User'
GROUP BY TicketNumber