Создать группу и отобразить порядковый номер? - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь понять, возможно ли создать запрос SQL, который может удовлетворить следующее требование. Поверните эту таблицу:

enter image description here

В это:

enter image description here

хитрость или задача состоит в том, чтобы получить порядок цикла, используя хронологический порядок метки времени типа события. Я пробовал разные комбинации ORDER BY с COUNT (*), но у меня не было никакого успеха. Это может быть достигнуто с помощью SQL? Любая помощь, которая может привести меня на правильный путь, приветствуется.

Ответы [ 2 ]

2 голосов
/ 04 октября 2019

Я заметил, что вы начинаете заново, основываясь на первых шести символах event_type. Итак, вам нужно partition by:

select t.*
       row_number() over (partition by left(event_type, 6) order by timestamp) as cycle_id
from t;

РЕДАКТИРОВАТЬ:

Если ваша нумерация основана на месяце:

select t.*
       row_number() over (partition by year(timestamp), month(timestamp) order by timestamp) as cycle_id
from t;
0 голосов
/ 04 октября 2019

Для примеров данных, которые вы разместили, я думаю, что вы хотите группировать для части столбца EventType перед подчеркиванием:

select 
  *,
  row_number() over (
    partition by left([Event Type], charindex('_', [Event Type]) - 1) 
    order by [TimeStamp])
  ) [Cycle Id]
from tablename
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...