#sql #sql-server
#sql #sql-server
Вопрос:
Данные:
DateTime Name EventName ReasonText
2020-07-01 09:57:41.007 Joe Smith Ready Ready
2020-07-01 09:57:47.000 Joe Smith Not Ready Pre-Shift
Я пытаюсь выяснить это: Верните результат, в котором аналитик перешел в состояние «Готовности», а затем в состояние «Предварительной смены»
или
Верните результат, в котором eventName и ReasonText= Ready, а следующий результат — eventName ‘Not Ready’ и ReasonText ‘Pre-Shift’
Таблицы и столбцы, используемые для этого:
AST (eventName) RC(ReasonText)
Заранее благодарю вас.
Комментарии:
1. Каков ваш ввод? Каков ожидаемый результат?
Name
?
Ответ №1:
Кажется, вы хотите lead()
:
Верните результат, в котором eventName и ReasonText= Ready, а следующий результат — eventName ‘Not Ready’ и ReasonText ‘Pre-Shift’
select t.*
from (select t.*,
lead(eventname) over (partition by name order by datetime) as next_eventname,
lead(ReasonText) over (partition by name order by datetime) as next_ReasonText
from t
) t
where eventname = 'Ready' and
ReasonText = 'Ready' and
next_eventname = 'Not Ready' and
next_ReasonText = 'Pre-Shift';
Комментарии:
1. Большое вам спасибо! Я собираюсь попробовать это 🙂