Извините, если название немного сбивает с толку. Немного предыстории - у нас есть клиенты, которые принадлежат к определенным группам, и эти клиенты могут переключаться между группами в любое время. Я пытаюсь создать столбец, который в хронологическом порядке перечисляет группы, к которым присоединились клиенты, в каком порядке, основываясь на дате, когда они присоединились к указанной группе.
Вот как выглядит таблица:
Cust_Tbl
| Account | Group | Join_Date |
|---------|-------|------------|
| 1000 | 21 | 2007-07-22 |
| 1000 | 26 | 2017-03-08 |
| 1002 | 21 | 2014-06-19 |
| 1002 | 23 | 2019-01-01 |
| 1003 | 26 | 2005-10-05 |
| 1004 | 21 | 2018-05-07 |
Вот как я хочу, чтобы это выглядело так:
Cust_Tbl2
| Account | Group | Join_Date | Group_Order |
|---------|-------|------------|-------------|
| 1000 | 21 | 2007-07-22 | 1 |
| 1000 | 26 | 2017-03-08 | 2 |
| 1002 | 21 | 2014-06-19 | 1 |
| 1002 | 23 | 2019-01-01 | 2 |
| 1003 | 26 | 2005-10-05 | 1 |
| 1004 | 21 | 2018-05-07 | 1 |
Как видите, группы нумеруются в хронологическом порядке с разбивкой по счетам.
Я перепробовал множество других методов - включая некоторый код, который я нашел в других местах на SO -
Измените таблицу, добавив столбец идентификаторов на основе заказа по
Я относительно новичок в этом, так что мне было не совсем легко понять (были проблемы со свойством identity, но это не мой главный вопрос)
Самая близкая вещь, которую я смог придумать, - это простая оконная функция (которая также является новой для меня). Очевидно, это не работает, потому что он не группируется по номеру счета.
select
*
, ROW_NUMBER() over(order by Join_Date) as num
from
Cust_Tbl
Пока что я стою на месте. Любая помощь с благодарностью!
Редактировать: обновлен запрос для сопоставления таблиц