Как сбросить DENSE_RANK

У меня есть следующая таблица

Id, Cat1, Cat2, кола, ColB,

1,1,1 ,,

2,1,1 ,,

3,1,2 ,,

4,1,3 ,,

5,2,11 ,,

6,2,12 ,,

7,2,12 ,,

Мне нужно добавить уникальный последовательный номер для столбца группировки Cat2 начиная с 1, но он должен вернуться к 1, когда Cat1 изменится

Мой вывод должен быть

Row, Id, Cat1, Cat2, ColA, ColB,

1,1,1,1 ,,

1,2,1,1 ,,

2,3,1,2 ,,

3,4,1,3 ,,

1,5,2,11 ,,

2,6,2,12 ,,

2,7,2,12 ,,

DENSE_RANK () работает, чтобы дать уникальное значение, например

Row= DENSE_RANK() OVER ( ORDER BY Cat2) 

но мне нужно, чтобы он перезагрузился из другого столбца Cat1

Используйте предложение PARTITION BY в Cat1:

 Row = DENSE_RANK() OVER ( PARTITION BY Cat1 ORDER BY Cat2) 

Предложение PARTITION BY разбивает ваш DENSE_RANK () сначала на основе вашего Cat1, прежде чем оценивать их плотно, что именно то, что вам нужно.

  • Соединение было успешно установлено с сервером, но затем произошла ошибка во время рукопожатия до входа в SQL Server 2012
  • UPDATE TABLE SET (подзапрос) = '0'
  • агрегирование разделенных запятыми значений в позиции
  • Почему определение пространства имен появляется во внутреннем элементе этого запроса, а также на внешнем
  • Изменения в T-SQL между SQL Server 2008 и 2012
  • Запрос набора результатов предыдущего запроса
  • Что мне делать, если я найду тупик на SQL Server 2012? Есть ли набор правил / шагов, которые я могу выполнить, чтобы выйти из него
  • Используйте EXISTS с производной таблицей
  • запрос для подсчета одинаковых значений для каждого столбца
  • Показать даты, которые не имеют значений для выбранного столбца
  • Получение максимальной цены с минимальной даты на сервере sql
  • Давайте будем гением компьютера.