Я хочу сгруппировать значения по первому значению группы, но мне кажется, что я слепой.Пример таблицы
COL_1 COL_2 COL_3 ROW_ID
A AA 2017-01-01 1
A BB 2017-01-05 2
A BB 2017-01-21 3
A AA 2017-01-22 4
A BB 2017-01-23 5
A BB 2017-01-24 6
B AA 2017-01-01 7
B BB 2017-01-05 8
B BB 2017-01-22 9
B AA 2017-01-24 10
C BB 2017-01-01 11
Результат должен выглядеть следующим образом
COL_1 COL_2 COL_3 ROW_ID Group
A AA 2017-01-01 1 1
A BB 2017-01-05 2 1
A BB 2017-01-21 3 1
A AA 2017-01-22 4 2
A BB 2017-01-23 5 2
A BB 2017-01-24 6 2
B AA 2017-01-01 7 3
B BB 2017-01-05 8 3
B BB 2017-01-22 9 3
B AA 2017-01-24 10 4
C AA 2017-01-01 11 5
Номер группы также может быть номером первого идентификатора каждой группы или любого другого имени., но должен быть уникальным.Я не хочу использовать курсор, просто простой T-SQL от SQL-SERVER 2012 и выше
Я думаю, что ответ имеет отношение к LAG и PARTITION OVER, но не нашел решения ...,Пока что
Есть идеи?Приветствия, Алекс
РЕДАКТИРОВАТЬ Решение от @Gordon с небольшим изменением
select t.*,
col_1 + '_' + CONVERT(VARCHAR,sum(case when col_2 = 'AA' then 1 else 0 end) over (order by rowid)) as grp
from t;
Еще раз спасибо Гордон